【发布时间】:2018-05-09 18:08:30
【问题描述】:
Cay Horstmann 的书《不耐烦的 Scala》中有一条关于 apply 方法的注释:
有时,() 符号会与另一个 Scala 特性发生冲突: 隐式参数。例如,表达式
"Bonjour".sorted(3)产生错误,因为可以选择调用 sorted 方法 有一个排序,但 3 不是一个有效的排序。
解决方法是将"Bonjour".sorted赋值给一个变量,然后调用apply,例如:
val result = "Bonjour".sorted
result(3)
或者显式调用apply:
"Bonjour".sorted.apply(3)
但是为什么这不起作用并产生编译错误:
("Bonjour".sorted)(3)
sorted 方法返回一个String,可以隐式转换为StringOps,括号用于包裹字符串表达式。
为什么编译器不接受调用StringOps 的apply 方法?
【问题讨论】:
标签: scala apply implicit-parameters