到目前为止,Scala 中的隐式参数对我来说并不好——它太接近全局变量了,但是因为 Scala 似乎是一种相当严格的语言,我开始怀疑自己的观点: ——)。
问: 当隐式参数真正起作用时,您能否展示一个真实的(或关闭的)好例子。IOW: 比 showPrompt
更严肃的东西,这将证明这样的语言设计。
或者相反——您能否显示可靠的语言设计(可以是虚构的) ,使隐式语言变得不必要。我认为即使没有机制也比隐式要好,因为代码更清晰,没有猜测。
请注意,我问的是参数,而不是隐式函数(转换) !
谢谢你给出的所有答案。也许我应该澄清一下我对“全局变量”的反对意见。考虑一下这样的函数:
max(x : Int,y : Int) : Int
你说了算
max(5,6);
你可以这样做:
max(x:5,y:6);
但在我看来 implicits
是这样运作的:
x = 5;
y = 6;
max()
它与这样的结构(类似 PHP)没有很大的不同
max() : Int
{
global x : Int;
global y : Int;
...
}
这是一个很好的例子,但是,如果你可以认为是灵活的使用发送消息不使用 implicit
请张贴反例。我真的很好奇语言设计中的纯粹性; ——)。