Scala是否强类型?
>
Scala是否强类型?您是否有示例如何在语言类型系统中反映出来? Scala是否允许类型惩罚?它是否允许强制?
> Scala是否有ML这样的多型? 谢谢! 解决方法
>是的.
由于强类型,它不允许“打字”,因为我知道它在C语言中使用.但是,您有子类型,因此如果A<:B(A是B的子类型或更具体的B类型),您可以安全地使用类型A的值,其中请求类型B的值. 您可以使用a.asInstanceOf [B]强制类型,但是这将在运行时进行类型检查,如果a不是B的子类型,则会引发异常,但高级类型除外在JVM上擦除,这意味着只有在引用类型参数的实际值时才会抛出此类异常. 另一个例外是结构类型,可以被认为是“双关语”,虽然类型安全: // ordinary type trait Foo { def bar: Int } // structural type type Bar = Any { def bar: Int } def test(b: Bar) = b.bar test(new Foo { val bar = 1234 }) // allowed 这被认为是一种很少使用的高级功能,甚至可能在将来的Scala版本中被弃用.它需要运行时反射,因此会带来性能损失. 你也可以使用特殊的 >不知道,不是ML专家.但是如果polytype只是意味着this,那么这看起来像普通的高级(参数化)类型或“泛型”,答案是肯定的. >示例:标识函数:def标识[A](x:A):A = x>示例:单一类型参数:特征选项[A] {def get:A} (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |