mail 元素是使用默认值指定的,因此我们不必明确为它提供一个值。但是,如果我们需要像下面这样做,我们就不能在 Java 中混淆这两种方式(明确名称和忽略名称):
@SourceURL(value = "http://coders.com/",
mail = "support@coders.com")
publicclassMyClassextendsHisClass ...
Scala 在这方面提供了更多地灵活性
@SourceURL("http://coders.com/",
mail = "support@coders.com")
classMyScalaClass ...
默认参数值(DEFAULT PARAMETER VALUES)
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
classPoint(val x: Double = 0, val y: Double = 0)val point1 = new Point(y = 1)
在这里我们必须要明确 y = 1 。
注意从 Java 代码里调用时, Scala 中的默认参数不是可选的。
// Point.scala
class Point(val x: Double = 0, val y: Double = 0)
// Main.javapublicclassMain {publicstaticvoidmain(String[] args) {
Point point = new Point(1); // does not compile
}
}