1. 程式人生 > >scala筆記-預設引數和帶名引數(4)

scala筆記-預設引數和帶名引數(4)

預設引數

在Scala中,有時我們呼叫某些函式時,不希望給出引數的具體值,而希望使用引數自身預設的值,此時就定義在定義函式時使用預設引數。

def sayHello(firstName: String, middleName: String = "William", lastName: String = "Croft") = firstName + " " + middleName + " " + lastName

如果給出的引數不夠,則會從左往右依次應用引數。

Java與Scala實現預設引數的區別
Java:
public void sayHello(String name, int age) {
  if(name == null) {
    name = "defaultName"
  }
  if(age == 0) {
    age = 18
  }
}
sayHello(null, 0)

Scala:def sayHello(name: String, age: Int = 20) {
  print("Hello, " + name + ", your age is " + age)
}
sayHello("leo")

帶名引數

在呼叫函式時,也可以不按照函式定義的引數順序來傳遞引數,而是使用帶名引數的方式來傳遞。

sayHello(firstName = "Mick", lastName = "Nina", middleName = "Jack")

還可以混合使用未命名引數和帶名引數,但是未命名引數必須排在帶名引數前面。

sayHello("Mick", lastName = "Nina", middleName = "Jack")