我正在尝试Scala中的一些东西,来自Python。由于Scala是很多更严格的保守类型一致的,我很惊讶地发现,我可以做以下的串联,这将在Python炸毁:为什么我可以在Scala中连接字符串和Int?
def adder(one:Any, two:String) = {one+two}
adder("word", "suffix")
res13:字符串= wordsuffix
但也:
val x:Int = 1
adder(x, "suffix")
res12:字符串= 1suffix
所以它只是一个转化成
Int
一个String
瓦特/输出告诉我。这叫做什么?它背后的逻辑是什么?这有什么好处?我感觉它会回来咬我,例如当处理用户对功能的输入时。
我知道这不是很具体,如果这太宽泛,我会很乐意回收这个问题。
如果你的问题真的** _为什么_ **这是如此在斯卡拉而不是** _这是怎么做的,我怀疑这是这样做的,因为在Java(主要目标平台)见[5.4。字符串转换](https://docs.oracle.com/javase/specs/jls/se7/html/jls-5.html#jls-5.4)以及.Net(历史上的其他目标平台),它就是这样工作的。至于它为什么在那里,我认为是因为一些典型用法的方便。 – SergGr