类型推断有多贵?

fla*_*ian 7 scala

对于Scala类型的推理引擎,我肯定更为兴奋,但在现实环境中:

  1. 它的性能有多大?

  2. 何时推断类型,在编译时或运行时?

Rol*_*uhn 18

Scala的复杂而强大的类型在编译期间仅存在(*):它们从源(您给出它们)进行解析,推断,检查然后最终被丢弃.最后可能听起来荒谬,但它是JVM的作案手法(见类型擦除)和非常有用的从语言设计者的观点.

因此,要回答你的问题:在运行时没有区别的类型是否明确给出或推断,唯一的区别是它需要多长时间来编译程序.

(*)2.10版本将附带一个反射库,允许程序在运行时也访问其类型信息; 这增加了自由度 - 如果使用它当然会在运行时刻录CPU周期 - 但不会改变任何上述点.