加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

一切都是Scala中的一个对象

发布时间:2020-12-16 08:48:52 所属栏目:安全 来源:网络整理
导读:我是 Scala的新手并且听到很多东西都是Scala中的一个对象.我不知道的是“一切都是对象”的优势是什么?如果一切都不是对象,那么我不能做的事情是什么?欢迎举例.谢谢 解决方法 将“一切”作为对象的优点是,抽象中断的情况要少得多. 例如,方法不是Java中的对
我是 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)

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

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

还有其他不那么重要的情况(对象与类,原始对比而不是,值类等),但最重要的是折叠方法和对象之间的区别,以便传递和抽象功能就像传递一样简单围绕并抽象数据.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读