当您选择 Scala(或 F#、Haskell、C#)等静态类型语言而不是 Ruby、Python、Clojure、Groovy(具有宏或运行时元编程功能)等动态类型语言时,您在实践中失去了什么)?请考虑最好的静态类型语言和最好的(在您看来)动态类型的语言,而不是最差的。
答案总结:
恕我直言,Ruby 等动态语言相对于 Scala 等静态类型语言的主要优势是:
- 快速的编辑-运行周期(JavaRebel 是否缩小了差距?)
- 目前 Scala/Lift 社区比 Ruby/Rails 或 Python/Django 小得多
- 可以修改类型定义(尽管动机或需要不是很清楚)
最佳答案
原则上,当不清楚(在静态上下文中)正确的做法是什么时,您将放弃忽略正在使用的类型的能力,仅此而已。
由于复杂的类型检查可能相当耗时,您也可能被迫放弃快速的在线元编程。
在实践中,使用 Scala,您几乎不会放弃任何其他东西,也不会放弃任何我特别关心的东西。您不能注入(inject)新方法,但可以编译和运行新代码。您必须在函数参数中指定类型(以及递归函数的返回类型),如果您自己从不犯类型错误,这会有点烦人。由于它会编译每个命令,因此 Scala REPL 不像例如Python 外壳。而且由于它使用 Java 反射机制,因此您无法像使用例如Python(无论如何都需要构建自己的检查库)。
关于ruby - Scala 缺少哪些动态语言(如 Ruby 或 Clojure)的特性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2566569/