Scala查找方法语法

时间:2015-03-28 15:00:30

标签: scala

val underlying: MongoDBCollection
def find(doc: DBObject): DBCursor = underlying find doc

这是一个假设的计划。这显然是find方法的有效实现,但我不明白方法体underlying find doc如何产生值。 find方法如何评估doc参数,以及underlying变量如何影响任何内容?为什么不将find doc underlyingfind doc作为方法正文?

2 个答案:

答案 0 :(得分:2)

当一个方法只接受一个参数时,在对象上调用方法时,可以省略前缀.和大括号()

underlying find doc

相同
underlying.find(doc)

它使用find作为参数调用MongoDBCollection实例underlying上的doc方法。

答案 1 :(得分:0)

在MongoDB中,您可以将对象传递给find函数:

db.<collection>.insert({ "a": "aa"})
db.<collection>.findOne()
{ "_id" : ObjectId("5516c37adedf9a4f8cffc7bd"), "a" : "aa" }
db.<collection>.findOne({ "_id" : ObjectId("5516c37adedf9a4f8cffc7bd"), "a" : "aa" })
{ "_id" : ObjectId("5516c37adedf9a4f8cffc7bd"), "a" : "aa" }

您可以像这样编写scala代码:

val collection: MongoDBCollection
def find(doc: DBObject): DBCursor = collection.find(doc)

findMongoDBCollection的函数,underlying是集合的一个实例(应该初始化为指向某个集合)。 doc是一个MongoDB对象,它被传递给find作为参数。