1. 程式人生 > 實用技巧 >scala之旅-核心語言特性預設引數值(五)

scala之旅-核心語言特性預設引數值(五)

Scala提供了引數預設值的功能,該預設值可以用於呼叫那些被省略的引數。

def log(message: String, level: String = "INFO") = println(s"$level: $message")

log("System starting")  // prints INFO: System starting
log("User not found", "WARNING")  // prints WARNING: User not found

引數 level有一個預設值,所有它是可選的。在最後一行,實參"WARNING" 重寫了預設的實參 “INFO”. 在java中需要用過載的方式實現的方法,在這裡可以通過可選引數的方式實現。但是,如果呼叫的時候省略了某個引數,那個這個引數後面的引數必須用名字指示出來

class Point(val x: Double = 0, val y: Double = 0)

val point1 = new Point(y = 1)

這裡我們必須將y的名字指示出來

注意,在scala中的預設引數,在java中呼叫時是不能省略的。

// Point.scala
class Point(val x: Double = 0, val y: Double = 0)
// Main.java
public class Main {
    public static void main(String[] args) {
        Point point = new Point(1);  //
does not compile } }