我試圖定義,我想調用函數是一個「默認參數」,與implicit
說法:與隱式和非隱含
scala> def f(implicit x: Int, y: String) = y
f: (implicit x: Int, implicit y: String)String
注 - 我試圖定義implicit x: Int
作爲第二個說法,但我得到了一個編譯時錯誤:
scala> def f(y: String, implicit x: Int) = y
<console>:1: error: identifier expected but 'implicit' found.
def f(y: String, implicit x: Int) = y
無論如何,我定義implicit Int
。
scala> implicit val x: Int = 100
x: Int = 100
然後我未能調用f
只需String
說法:
scala> f("foo")
<console>:10: error: not enough arguments for method f:
(implicit x: Int, implicit y: String)String.
Unspecified value parameter y.
f("foo")
^
接下來,我試圖通過指定參數來調用f
功能。那也失敗了。
scala> f(y = "foo")
<console>:10: error: not enough arguments for method f:
(implicit x: Int, implicit y: String)String.
Unspecified value parameter x.
f(y = "foo")
^
是否有可能通過提供隱含並提供僅y
一個參數調用該函數f
?
隱含的是完整的參數列表,而不僅僅是一個arguemnt。你需要兩個參數列表:'f(y:String)(implicit x:Int)' – 2015-04-01 20:07:52