1. 程式人生 > >Scala預設引數和帶名引數

Scala預設引數和帶名引數

預設引數
        在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")