【发布时间】:2016-02-18 02:34:55
【问题描述】:
scala 做了什么,然后就是为什么。
我的问题是为什么 scala 更喜欢将 Int 转换为 Double 而不是推断 AnyVal 或 Any:
// test1:
scala> val foo = if (true) 5 else 5.0
foo: Double = 5.0 // Why isn't this AnyVal or Any ?
// I can force it this way... once I realized this was my problem.
scala> val foo: Any = if (true) 5 else 5.0
foo: Any = 5
// or this way, which is better actually
scala> val bar : java.lang.Number = if (true) 5 else 5.0
bar: Number = 5
但我的问题不是它的作用,而是为什么将 Int 转换为 Double 的行为是正确的还是合理的?
我浪费了相当多的时间来将其隔离为导致错误的原因,并且为了在将来避免这种情况,我想为这些转换开发一些直觉。
【问题讨论】:
标签: scala type-inference