Scala中默认的第一个参数

Geo*_*Geo 3 default scala

有没有另一种方法使这项工作?

def b(first:String="hello",second:String) = println("first:"+first+" second:"+second)

b(second="geo")
Run Code Online (Sandbox Code Playgroud)

如果我只用以下方法调用方法:

b("geo")
Run Code Online (Sandbox Code Playgroud)

我明白了:

<console>:7: error: not enough arguments for method b: (first: String,second: String)Unit.
Unspecified value parameter second.
       b("geo")
Run Code Online (Sandbox Code Playgroud)

ten*_*shi 5

以下是一种可能的方法:您可以使用多个参数列表并进行currying:

scala> def b(first:String="hello")(second:String) = println("first:"+first+" second:"+second)
b: (first: String)(second: String)Unit

scala> b()("Scala")
first:hello second:Scala

scala> val c = b() _
c: (String) => Unit = <function1>

scala> c("Scala")
first:hello second:Scala
Run Code Online (Sandbox Code Playgroud)