许多用于学习Scala的可用资源都假定有一些Java背景。事实证明,对于没有Java背景的Scala学习者来说,这很有挑战性。
在学习Scala语言时,新的Scala开发人员应该了解哪些Java主义?
例如,了解CLASSPATH是什么、java命令行选项是什么等都很有用……
发布于 2011-01-20 07:18:50
这是一个非常好的问题!我从来没有想过人们学习Java只是为了让他们更容易学习Scala……
除了像for循环之类的所有基础知识之外,学习Java泛型真的很有帮助。Scala等效物比Java泛型更强大(也更难理解)。您可能希望找出Java泛型的限制在哪里,然后在哪些情况下可以使用Scala的类型构造函数来克服这些限制。在更基本的层面上,重要的是要知道为什么泛型是必要的,以及Java是如何成为强类型语言的。
Java允许您为一个类使用多个构造函数。当您学习Scala时,这些知识将毫无用处,因为Scala有另一种方法,允许您提供多种方法来创建类的实例。因此,您最好不要深入研究这个Java概念。
下面是Java和Scala之间的一些非常不同的概念。因此,如果您学习了Java概念,然后又想学习Scala中的等价物,那么您应该意识到,Scala等价物与Java版本有很大的不同,典型的Java开发人员很难适应Scala的思维方式。不过,首先习惯Java方式通常会有所帮助,因为它通常更简单、更容易学习。我个人认为Java是入门课程,而Scala是专业版本。
Java可变集合概念与Scala可变/不变differentiation
static方法(Java)与单例对象(Scala)
for循环return语句与Scala函数式风格(“每个表达式返回null的”无值“与Scala更显式的Option Java switch与Scala的match下面是您可能会从Java标准库中使用的东西的列表,即使您使用Scala进行开发:
最后是Scala的一些特性,这些特性在Java或Java标准库中没有直接的等价物:
作为values
map或
fold集合操作当然,所有的列表都是不完整的。这只是我对什么是重要的看法。我希望它能帮上忙。
顺便说一句:您绝对应该了解类路径和其他JVM基础知识。
发布于 2011-01-20 06:43:27
最重要的是标准库,因为这是Scala与Java的最大共同点。
您还应该对Java的语法有一个基本的了解,因为很多书最后都是将Scala中的某些东西与Java中的某些东西进行比较。但除了平台和一些库之外,它们是完全不同的语言。
有一些琐碎的约定从一个传递到另一个(比如命令行选项),但是当您阅读关于Scala的书籍和教程时,无论以前的Java经验如何,您都应该学习这些约定。
发布于 2011-01-20 06:44:52
"Scala for Java Refugees“系列文章提供了一些关于您应该知道典型Java语言主题以及如何将它们转换为Scala语言的说明。
例如,非常基本的Scala函数,它可以转换为Application特征、once considered harmful和now improved (无论如何都是针对Scala2.9)。
https://stackoverflow.com/questions/4741626
复制相似问题