嗨,下面的帖子说有#34;内置依赖注入"在斯卡拉
"作为一名Scala和Java开发人员,我甚至都没有想过 用Scala替换Scala作为我的下一个项目的主要语言。如果 我被迫写Java,最好是Java 8,但如果我有 选择,有很多东西(如OP正确陈述的那样) 除了Lambdas之外,Scala让我更加引人注目 Java的功能对我来说并不是什么意思。 Ruby有Lambdas, Python和JavaScript也是如此,Dart和我确定任何其他现代产品 语言。我喜欢Scala,因为除了之外还有很多其他的东西 lambdas,单一评论是不够的。
但仅举几例(其中一些被OP引用)
一切都是表达,因为 理解(尤其是多种期货,解决问题) 在一个漂亮的语法IMHO),隐含的回调三角形的死亡 转换,案例类,模式匹配,元组,事实 一切都已经正确实现了equals和hashcode(所以我 可以把一个元组,甚至一个数组作为一个关键字放在地图中),字符串 插值,多行字符串,默认参数,命名参数, 内置依赖注入,最复杂但最强大的类型 我所知道的任何语言的系统,类型推断(不如 Haskell,但比Java中不存在的要好。我总是这样的事实 从一组" monadic"中获取正确的类型。行动感谢 臭名昭着的东西,如CanBuildFrom(纯粹的天才)。我们不是 忘记通过名称参数传递和构建DSL的能力。 提取器(通过模式匹配)。还有更多。
我认为Scala是 这里留下来,至少对于Scala开发者来说,我100%肯定你会 找不到一个会说:#34; Java 8得到lambda的Scala开发人员? 很棒,再见scala永远!"。我能想到的唯一原因是编译 时间和二进制兼容性。如果我们忽略这两个,我只能说 是的,这证明了Scala是如何朝着正确的方向发展的 Java 8 lambdas和默认接口方法和流程是如此清晰 影响)
但我希望Scala能够改进Java 8 互操作性,例如以相同的方式支持功能接口。和 将新的隐式转换添加到Java 8集合以及获取 有利于改进JVM。
我会尽快替换Scala 我找到了一种语言,它可以让我了解Scala的功能并做得更好。所以 到目前为止我还没有找到这样的语言(检查过Haskell,Clojure,Go, Kotlin,Ceylon,Dart,TypeScript,Rust,Julia,D和Nimrod,Ruby Python,JavaScript和C#,其中一些非常有前途,但从那以后 我需要一种JVM语言,最好是一种静态类型的语言 很快缩小选择范围)
Java 8到目前为止还没有 关闭,抱歉。非常好的改进,我非常高兴Java开发人员 这将获得"许可"使用它(可能比采用更容易 Scala在企业中)但这不是Scala商店的原因 考虑回到Java。" [1]
built in dependency injection
中的scala
究竟是什么?
答案 0 :(得分:7)
它不是离散语言功能。我认为作者指的是Scala的功能集非常灵活,可以支持许多可以说是完成DI的技术:
这种多样性是Scala的象征。该语言旨在实现许多非常强大的概念,大多数是正交的,从而导致多种有效的方法来解决许多问题。作为Scala程序员的挑战是了解这个广度,然后为您的项目做出明智的选择。很多时候,这种选择取决于内部使用的范例来实现组件。