- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
一般风格问题。
随着我在编写函数式代码方面变得更好,我的更多方法正在变成纯函数。我发现我的许多“类”(在代码容器的松散意义上)正在变得无状态。因此,我将它们设为对象而不是类,因为不需要实例化它们。
现在在 Java 世界中,拥有一个充满“静态”方法的类似乎很奇怪,并且通常只用于“帮助”类,就像你在 Guava 和 Commons-* 等中看到的那样。
所以我的问题是,在 Scala 世界中,“对象”内部有很多逻辑,而不是“类”很正常,或者是否有另一个首选的成语。
最佳答案
正如您在标题中提到的那样,对象是单例类,而不是您在问题文本中提到的具有静态方法的类。
并且有一些东西使 scala 对象比 java-world 中的静态和单例更好,所以在 scala 中使用它们是非常“正常的”。
一方面,与静态方法不同,对象方法是多态的,因此您可以轻松地将对象作为依赖项注入(inject):
scala> trait Quack {def quack="quack"}
defined trait Quack
scala> class Duck extends Quack
defined class Duck
scala> object Quacker extends Quack {override def quack="QUAACK"}
defined module Quacker
// MakeItQuack expects something implementing Quack
scala> def MakeItQuack(q: Quack) = q.quack
MakeItQuack: (q: Quack)java.lang.String
// ...it can be a class
scala> MakeItQuack(new Duck)
res0: java.lang.String = quack
// ...or it can be an object
scala> MakeItQuack(Quacker)
res1: java.lang.String = QUAACK
关于Scala 对象和单例的兴起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13646504/
我最近购买了《C 编程语言》并尝试了 Ex 1-8这是代码 #include #include #include /* * */ int main() { int nl,nt,nb;
早上好!我有一个变量“var”,可能为 0。我检查该变量是否为空,如果不是,我将该变量保存在 php session 中,然后调用另一个页面。在这个新页面中,我检查我创建的 session 是否为空,
我正在努力完成 Learn Python the Hard Way ex.25,但我无法理解某些事情。这是脚本: def break_words(stuff): """this functio
我是一名优秀的程序员,十分优秀!