假设一个类定义了一个将整数转换为字符串的隐式函数:
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
}
据我所知,Groovyuse
对这种情况有一个关键字。有没有办法为Scala中的某个代码块提供隐式函数?