如何将不同的值传递给 Scala 对象中的变量
how to pass different values to a variable in a scala object
我想在 mongodb 中创建不同的集合,因为我有一个 scala 对象 class 这是我的代码
object Factory {
val connectionMongo = MongoConnection(SERVER)
val collectionMongo = connectionMongo(DATABASE)("collectionA")
}
我想为此添加不同的集合名称,我是这样做的
对象 class 这是我的代码
object Factory {
var COLLECTIONName:String=""
def setCollectionName(name:String)
{
COLLECTIONName=name
}
val connectionMongo = MongoConnection(SERVER)
val collectionMongo = connectionMongo(DATABASE)(COLLECTIONName)
}
class testA {
//getting collection object
Factory.setCollectionName("collectionA")
collectionMongo.find()//fetching the record of collectionA
}
class testB {
//getting collection object
Factory.setCollectionName("collectionB")
collectionMongo.find()//fetching the record of collectionB
}
但是这段代码没有按预期工作,它总是将 COLLECTIONName 值设为空字符串“”
请指导我哪里做错了,请帮助
你写了
val COLLECTIONName:String=""
然后您正在重新分配值。
您不能在 val 中重新分配一个值,而是使用 var。
但这也是一个糟糕的做法..所以尝试修改代码,以便它必须以更实用的方式编写。
修改后的代码类似于:
class Factory(connectionName:String) {
val connectionMongo = MongoConnection(SERVER)
val collectionMongo = connectionMongo(DATABASE)(connectionName)
}
class testA {
//getting collection object
val factory=new Factory("collectionA")
factory1.collectionMongo.find()//fetching the record of collectionA
}
class testB {
//getting collection object
val factory=new Factory("collectionB")
factory.collectionMongo.find()//fetching the record of collectionB
}
我不确定这是否是最好的方法,但它是一个更好的方法。
要求的单例对象方法:
object Factory {
var connectionName:String=_
val connectionMongo = MongoConnection(SERVER)
def collectionMongo = connectionMongo(DATABASE)(connectionName)
}
class testA {
//getting collection object
Factory.connectionName="collectionA"
Factory.collectionMongo.find()//fetching the record of collectionA
}
class testB {
//getting collection object
Factory.connectionName="collectionB"
Factory.collectionMongo.find()//fetching the record of collectionB
}
希望对您有所帮助!
这是典型的工厂模式,您可以将 collectionMongo
从 val 更改为这样的函数
object Factory {
val SERVER = "<some server>"
val DATABASE = "<some database>"
val connectionMongo = MongoConnection(SERVER)(DATABASE)
def getCollection(name: String) = connectionMongo(name)
}
用法
class testA {
val collectionA = Factory.getCollection(nameA)
}
class testB {
val collectionB = Factory.getCollection(nameB)
}
我想在 mongodb 中创建不同的集合,因为我有一个 scala 对象 class 这是我的代码
object Factory {
val connectionMongo = MongoConnection(SERVER)
val collectionMongo = connectionMongo(DATABASE)("collectionA")
}
我想为此添加不同的集合名称,我是这样做的 对象 class 这是我的代码
object Factory {
var COLLECTIONName:String=""
def setCollectionName(name:String)
{
COLLECTIONName=name
}
val connectionMongo = MongoConnection(SERVER)
val collectionMongo = connectionMongo(DATABASE)(COLLECTIONName)
}
class testA {
//getting collection object
Factory.setCollectionName("collectionA")
collectionMongo.find()//fetching the record of collectionA
}
class testB {
//getting collection object
Factory.setCollectionName("collectionB")
collectionMongo.find()//fetching the record of collectionB
}
但是这段代码没有按预期工作,它总是将 COLLECTIONName 值设为空字符串“” 请指导我哪里做错了,请帮助
你写了
val COLLECTIONName:String=""
然后您正在重新分配值。 您不能在 val 中重新分配一个值,而是使用 var。 但这也是一个糟糕的做法..所以尝试修改代码,以便它必须以更实用的方式编写。
修改后的代码类似于:
class Factory(connectionName:String) {
val connectionMongo = MongoConnection(SERVER)
val collectionMongo = connectionMongo(DATABASE)(connectionName)
}
class testA {
//getting collection object
val factory=new Factory("collectionA")
factory1.collectionMongo.find()//fetching the record of collectionA
}
class testB {
//getting collection object
val factory=new Factory("collectionB")
factory.collectionMongo.find()//fetching the record of collectionB
}
我不确定这是否是最好的方法,但它是一个更好的方法。
要求的单例对象方法:
object Factory {
var connectionName:String=_
val connectionMongo = MongoConnection(SERVER)
def collectionMongo = connectionMongo(DATABASE)(connectionName)
}
class testA {
//getting collection object
Factory.connectionName="collectionA"
Factory.collectionMongo.find()//fetching the record of collectionA
}
class testB {
//getting collection object
Factory.connectionName="collectionB"
Factory.collectionMongo.find()//fetching the record of collectionB
}
希望对您有所帮助!
这是典型的工厂模式,您可以将 collectionMongo
从 val 更改为这样的函数
object Factory {
val SERVER = "<some server>"
val DATABASE = "<some database>"
val connectionMongo = MongoConnection(SERVER)(DATABASE)
def getCollection(name: String) = connectionMongo(name)
}
用法
class testA {
val collectionA = Factory.getCollection(nameA)
}
class testB {
val collectionB = Factory.getCollection(nameB)
}