一切都是Scala中的一个对象

pt2*_*121 7 scala

我是Scala的新手并且听到很多东西都是Scala中的一个对象.我不知道的是"一切都是对象"的优势是什么?如果一切都不是对象,我不能做的事情是什么?欢迎举例.谢谢

Rex*_*err 4

让“一切”都是对象的优点是,抽象破坏的情况要少得多。

例如,方法不是 Java 中的对象。所以如果我有两个字符串,我可以

String s1 = "one";
String s2 = "two";
static String caps(String s) { return s.toUpperCase(); }
caps(s1);  // Works
caps(s2);  // Also works
Run Code Online (Sandbox Code Playgroud)

因此,我们在大写操作中抽象出了字符串标识。但是,如果我们想要抽象出操作的标识,也就是说,我们对一个字符串执行某些操作,返回另一个字符串,但我们想要抽象出细节是什么,该怎么办?现在我们陷入困境,因为方法不是 Java 中的对象。

在 Scala 中,方法可以转换为函数,即对象。例如:

def stringop(s: String, f: String => String) = if (s.length > 0) f(s) else s
stringop(s1, _.toUpperCase)
stringop(s2, _.toLowerCase)
Run Code Online (Sandbox Code Playgroud)

现在我们已经抽象了对非空字符串执行一些字符串转换的想法。

如果我们需要做的话,我们可以列出操作等并传递它们。

还有其他不太重要的情况(对象与类、原始与非、值类等),但最重要的是消除方法和对象之间的区别,以便传递和抽象功能就像传递围绕和抽象数据。