开发人员应该学习Java生态系统和语言的哪些部分以充分利用Scala?

时间:2011-01-19 22:39:19

标签: scala

3 个答案:

答案 0 :(得分:9)

这是一个非常好的问题!我从来没有想过人们学习Java只是为了让他们更容易学习Scala ...

除了for循环之类的所有基础知识之外,学习Java Generics可能非常有用。 Scala等价物比Java泛型更有效(并且更难理解)。您可能想要尝试找出Java Generics的限制在哪里,然后在哪些情况下可以使用Scala的类型构造函数来克服这些限制。在更基础的层面上,重要的是要知道为什么泛型是必要的,以及Java是一种强类型语言。

Java允许您为一个类提供多个构造函数。当您学习Scala时,这些知识将毫无用处,因为Scala有另一种方法可以提供多种方法来创建类的实例。所以,你宁愿不深入研究这个Java概念。

以下是Java和Scala之间存在很大差异的一些概念。因此,如果你学习了Java概念,然后想要学习Scala中的等价物,你应该知道Scala等价物与Java版本的差别很大,以至于典型的Java开发人员难以适应Scala方式思考。尽管如此,它通常有助于首先习惯Java方式,因为它通常更简单,更容易学习。我个人更喜欢将Java视为入门课程,Scala是专业版。

  • Java可变集合概念与Scala可变/不可变分化
  • static方法(Java)与单例对象(Scala)
  • for循环
  • Java return语句与Scala功能样式(“每个表达式返回一个值”)
  • Java使用null表示“无价值”与Scala更明确的Option类型
  • 进口
  • Java的switch与Scala的match

以下是您可能会在Java标准库中使用的内容列表,即使您使用Scala进行开发:

  • IO
  • GUI(Scala有Swing的包装,但是嘿)
  • 网址,URI,文件
  • 日期
  • 计时器

最后,Scala的一些功能在Java或Java标准库中没有直接的等价物:

  • 运算符重载
  • 暗示和隐含转换
  • 多个参数列表/ currying
  • 匿名函数/函数作为值
  • 演员
  • Scala模式匹配(摇滚)
  • 性状
  • 类型推断
  • for comprehensions
  • 很棒的收集操作,例如foldmap

当然,所有列表都不完整。这只是我对重要事项的看法。我希望它有所帮助。

顺便说一下:你应该知道类路径和其他JVM基础知识。

答案 1 :(得分:4)

答案 2 :(得分:4)