クラスが整数を文字列に変換する暗黙的な関数を定義するとします。
class Dollar() {
implicit def currency(num: Int): String = "$" + num.toString
def apply(body: => Unit) {
body
}
}
また、暗黙の関数によって変換された数値を出力する関数もあります。
def printAmount(num: Int)(implicit currency: Int => String) {
println(currency(num))
}
printAmount()
次に、クラスのコンストラクターでメソッドを呼び出すことができますDollar
。
val dollar = new Dollar {
printAmount(32) // prints "$32"
}
ただし、コード ブロックに暗黙的な関数を提供する場合は、暗黙的な値が適用されないため、コンパイル エラーが発生します。
dollar {
printAmount(14) // Error: No implicit view available from Int => String
}
私が知っているように、Groovy にはuse
このような場合のキーワードがあります。Scala で特定のコード ブロックに暗黙的な関数を提供する方法はありますか?