2015-03-28 2 views
0
val underlying: MongoDBCollection 
def find(doc: DBObject): DBCursor = underlying find doc 

Вот гипотетическая программа. Это, по-видимому, действительная реализация метода find, но я не понимаю, как тело метода underlying find doc могло бы дать значение. Как метод find оценивает параметр doc и как переменная underlying влияет на что-либо? Почему не find doc underlying или просто find doc как метод корпус?Scala Find Method Синтаксис

+0

Ваш вопрос о монго или о скале? – pedrofurla

+0

Scala. Но на это был дан ответ. В книге, которую я читаю, не упоминаются особенности синтаксиса для этого метода поиска. – RoyalCanadianKiltedYaksman

ответ

2

Когда метод принимает только один параметр, вы можете опустить как префикс ., так и скобки () при вызове метода на объект.

underlying find doc 

такое же, как

underlying.find(doc) 

Он вызывает метод find на MongoDBCollection например underlying с doc в качестве параметра.

0

В MongoDB вы можете передать объект в функцию поиска:

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) 

find является функцией MongoDBCollection и underlying является экземпляром коллекции (которая должна быть инициализирована, чтобы указать на некоторую коллекцию). doc - объект MongoDB, который передается для поиска в качестве аргумента.