首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Scala面向对象编程

Scala面向对象编程
EN

Stack Overflow用户
提问于 2017-04-13 07:05:38
回答 1查看 212关注 0票数 0

在面向对象编程中,对象有自己的状态和行为。对象状态存储在实例变量中,我们可以使用objectname来引用它们。

instance.variablename符号用于引用字段,实例方法由objectname.instancemethodname(parm..)调用。

然而,在这里,Scala还有其他的符号。

例如:在Scala列表中,我遇到了以下表示法:

l filter p

在这里,l是list实例的名称,p是参数。

此场景将返回满足谓词p的元素列表。

所以我的问题是,这不是什么意思,它意味着什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-13 07:10:46

Scala编译器将l filter p重写为l.filter(p),因此它们在运行时得到相同的处理,但是在读者看来它们是不同的,因此是影响代码可读性的编程风格的选择。

Scala将这种类型的调用称为“不确定符号”,其目的是作为+*等操作来支持方法。在Java中,像+这样的操作符是由JVM提供的,但是在Scala中,它们可以在类上定义,然后使用相同的语法调用,就像在Java中由JVM定义运算符一样。

例如:

代码语言:javascript
复制
case class Foo( v:String ) {
    def +(o:Foo) = Foo(v + o.v)
}

Foo("a").+(Foo("b")) // equals Foo("ab")
Foo("a") + Foo("b") // equals Foo("ab")
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43385647

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档