gpt4 book ai didi

scala - Scala Trait 定义中 -= 和 += 的含义

转载 作者:行者123 更新时间:2023-12-02 08:22:23 24 4
gpt4 key购买 nike

我正在从 Scala in Action 一书中学习 Scala,在该章中,作者解释了 Traits。解释有以下代码块,其中我无法弄清楚Trait definitionnof Updatable

中-=和+=的含义

请帮忙!

package com.scalainaction.mongo
import com.mongodb.{DBCollection => MongoDBCollection }
import com.mongodb.DBObject

class DBCollection(override val underlying: MongoDBCollection)
extends ReadOnly
trait ReadOnly {
val underlying: MongoDBCollection
def name = underlying getName
def fullName = underlying getFullName
def find(doc: DBObject) = underlying find doc
def findOne(doc: DBObject) = underlying findOne doc
def findOne = underlying findOne
def getCount(doc: DBObject) = underlying getCount doc
}
trait Updatable extends ReadOnly {
def -=(doc: DBObject): Unit = underlying remove doc
def +=(doc: DBObject): Unit = underlying save doc
}

最佳答案

它们只是方法的名称。 Scala 中的方法名称等不限于字母、数字和下划线,就像在其他语言(如 Java)中一样。因此,+=-= 之类的名称是完全可以接受的方法名称。

请注意,在 Scala 中,方法和运算符之间没有区别。运算符只是方法。调用具有一个参数的方法有两种语法:使用点和圆括号之间的参数的“正常”语法,以及中缀语法。

val a = 3
val b = 2

// The infix syntax for calling the + method
val c = a + b

// Normal method call syntax for calling the + method
val d = a.+(b)

请注意,在您的示例中,中缀语法用于调用底层 上的方法。例如:underlying find doc 等同于underlying.find(doc)

关于scala - Scala Trait 定义中 -= 和 += 的含义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35795664/

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