“Thinking in Scala” 如果我有 Java/C++ 背景?

“Thinking in Scala" if I have a Java/C++ background?

我熟悉在 Java 中开发服务器端应用程序,但现在我想开始使用 Scala。你能描述一下必要的范式转变吗?以下是一些可能有助于您确定答案的问题:

  1. 如何以不同的方式构建和设计 Web 应用程序?什么是 最大的区别?
  2. 我应该停止什么doing/using;我应该从什么开始 doing/using 相反?
  3. 有没有客户端considerations/restrictions?

我不是在寻找 Java 和 Scala 之间的详细比较。

Scala 和 Java 的主要区别在于 Scala 对函数式编程的使用。

  1. 对于网络应用程序,您将使用不同的框架。 Play是目前最流行的口味。它感觉类似于其他框架中的 MVC 工作,但更倾向于功能纯粹(尽管大多数 Play 应用程序远非纯粹)
  2. 您应该停止考虑内存中的可变字段,而应该考虑不可变值的数据流。当您可以使用 val 时,请不要使用 var。循环将主要被更高阶的构造所取代,例如 mapfold。避免空值,改用 Options。
  3. 假设一个网络客户端,不。除非你想将 Scala 编译成 JS。然后同样的东西适用。

学习明智,我会从Twitter Scala school, then once you grok that, I recommend the book Functional Programming in Scala开始。我认为这两个资源将指导您朝 FP 方向发展,而不是使用新语法编写 Java 风格的程序。然后,在 OOP/FP 量表中找到适合手头问题的正确位置。