scala中的“内置依赖注入”

时间:2014-07-27 12:54:18

标签: java scala dependency-injection

嗨,下面的帖子说有#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究竟是什么?

1 个答案:

答案 0 :(得分:7)

它不是离散语言功能。我认为作者指的是Scala的功能集非常灵活,可以支持许多可以说是完成DI的技术:

这种多样性是Scala的象征。该语言旨在实现许多非常强大的概念,大多数是正交的,从而导致多种有效的方法来解决许多问题。作为Scala程序员的挑战是了解这个广度,然后为您的项目做出明智的选择。很多时候,这种选择取决于内部使用的范例来实现组件。