Scala – 课程足够吗?
发布时间:2020-12-16 08:51:23 所属栏目:安全 来源:网络整理
导读:来自 Java我对scala的类/对象区别感到困惑. 请注意,我不要求正式的差异;有足够的 网上的参考文献解释了这一点,并且有相关的问题 SO. 我的问题是: 为什么scala的设计者 选择做更多的事情 复杂(与Java或.相比) C#)?我有什么缺点 我希望如果忽略这种区别 并且
来自
Java我对scala的类/对象区别感到困惑.
请注意,我不要求正式的差异;有足够的 网上的参考文献解释了这一点,并且有相关的问题 SO. 我的问题是: >为什么scala的设计者 谢谢. 解决方法
Java类包含两种完全不同类型的成员 – 实例成员(例如BigDecimal.plus)和静态成员(例如BigDecimal.valueOf).在Scala中,只有实例成员.这实际上是一种简化!但它留下了一个问题:我们在哪里放置像valueOf这样的方法?这是对象有用的地方.
class BigDecimal(value: String) { def plus(that: BigDecimal): BigDecimal = // ... } object BigDecimal { def valueOf(i: Int): BigDecimal = // ... } 您可以将此视为匿名类的声明及其单个实例化: class BigDecimal$object { def valueOf(i: Int): BigDecimal = // ... } lazy val BigDecimal = new BigDecimal$object 在阅读Scala代码时,区分类型和值是至关重要的.我已将IntelliJ配置为蓝色高光类型. val ls = List.empty[Int] // List is a value,a reference the the object List ls: List[Int] // List is a type,a reference to class List Java还具有Scala中删除的另一个复杂程度 – 字段和方法之间的区别.接口上不允许使用字段,除非它们是静态的和最终的;如果在子类中重新定义,则可以覆盖方法,而隐藏字段. Scala消除了这种复杂性,只向程序员公开了方法. 最后,回答你的第二个问题:如果你没有声明任何对象,你的程序可能永远不会运行,因为你在Scala中定义了相同的public static void main(String … args){},你需要至少一个对象! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |