gpt4 book ai didi

scala - 在 Scala 中一切都是对象

转载 作者:行者123 更新时间:2023-12-04 10:40:12 27 4
gpt4 key购买 nike

我是 Scala 的新手,听说过很多东西在 Scala 中都是对象。我不明白的是“一切都是对象”的优势是什么?如果一切都不是对象,我不能做哪些事情?欢迎举例。谢谢

最佳答案

将“一切”作为对象的优势在于,抽象中断的情况要少得多。

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

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

因此,我们在制作大写字母的操作中抽象出了字符串标识。但是,如果我们想抽象掉操作的身份——也就是说,我们对返回另一个字符串的字符串做一些事情,但我们想抽象掉细节是什么怎么办?现在我们被困住了,因为方法不是 Java 中的对象。

在 Scala 中,方法可以转换为函数,也就是对象。例如:
def stringop(s: String, f: String => String) = if (s.length > 0) f(s) else s
stringop(s1, _.toUpperCase)
stringop(s2, _.toLowerCase)

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

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

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

关于scala - 在 Scala 中一切都是对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15669596/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com