我試圖定義一些方法以一個隱含參數類:如何提供在類級別的高級參數默認值
object Greetings {
def say(name: String)(implicit greetings: String): String = greetings + " " +name
}
我使用這個類從另一個類
implicit val greetings = "hello" //> greetings : java.lang.String = hello
Greetings.say("loic") //> res0: String = hello loic
Greetings.say("loic")("hi") //> res1: String = hi loic
我的問題是,它只有在我的Greetings對象外定義了隱式val時纔有效。 我想能夠提供與隱含參數的方法,用我的類中的默認值,讓用戶輕鬆使用我的API(比如Scala集合API)的。
所以我想這樣做,但它不工作(沒有發現隱含值):
object Greetings {
implicit val greetings = "hello"
def say(name: String)(implicit greetings: String): String = greetings + " " +name
}
然後
Greetings.say("loic")
Greetings.say("loic")("hi")
我知道我可以(implicit greetings: String = "hello")
定義默認值,但我想在課堂上做到這一點,以避免重複,如果有很多方法。例如
我想我錯過了一些東西,因爲我看到List
類中定義了CanBuildFrom
。
這是不奇怪的,因爲隱含只會第二插入到正常參數。通常情況下你的類會是什麼樣子'類的問候()(隱式VAL ...)' – thatsIch