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 } }