从另一个 class 访问 Companion Class 变量
Accessing Companion Class variable from another class
我真的是 scala 的新手。我正在尝试从 class 外部访问伴随 class 变量。在不创建 class.
实例的情况下,我该怎么做?
在下面的示例中,我可以从 YotascaleCostProcessing class
中访问 INTERNAL_COST_REQUESTS
package com.yotascale
class YotascaleCostProcessing extends YotascaleActorSystem{
//companion object
object YotascaleCostProcessing{
val INTERNAL_COST_REQUESTS = "internal-cost-requests"
val INTERNAL_COST_UPDATES = "internal-cost-updates"
}
def setupInfrastructure() = {
QueueService.createQueue(YotascaleCostProcessing.INTERNAL_COST_REQUESTS)
QueueService.createQueue(YotascaleCostProcessing.INTERNAL_COST_UPDATES)
}
}
当我从另一个包中的另一个 class 执行 YotascaleCostProcessing.INTERNAL_COST_UPDATES 时,我收到错误 "not found: value YotascaleCostProcessing",即使 YotascaleCostProcessing 的导入在那里。唯一可行的方法是当我这样做时:new YotascaleCostProcessing().YotascaleCostProcessing.INTERNAL_COST_UPDATES
package com.yotascale.service.cost.setup;
import com.yotascale.YotascaleCostProcessing
class MetadataNotificationConfiguringActor(message:Message) extends UntypedActor {
def configureBucket() = {
val realtimeupdates = QueueService.getQueueURL(YotascaleCostProcessing.INTERNAL_COST_REQUESTS)
}
}
您只需输入
Foo.counter
喜欢
import test.Foo
object Test extends App {
println(Foo.counter)
}
和
package test
object Foo {
var counter = 0
}
您的问题是您的对象定义在 class 定义中。对象在 Scala 中只是单例 class,所以你的定义就像
class YotascaleCostProcessing extends YotascaleActorSystem{
class YotascaleCostProcessing$ {
val INTERNAL_COST_REQUESTS = "internal-cost-requests"
val INTERNAL_COST_UPDATES = "internal-cost-updates"
}
val YotascaleCostProcessing = new YotascaleCostProcessing$()
}
如果没有 YotascaleCostProcessing 实例,您将无法访问它
我真的是 scala 的新手。我正在尝试从 class 外部访问伴随 class 变量。在不创建 class.
实例的情况下,我该怎么做?在下面的示例中,我可以从 YotascaleCostProcessing class
中访问 INTERNAL_COST_REQUESTSpackage com.yotascale
class YotascaleCostProcessing extends YotascaleActorSystem{
//companion object
object YotascaleCostProcessing{
val INTERNAL_COST_REQUESTS = "internal-cost-requests"
val INTERNAL_COST_UPDATES = "internal-cost-updates"
}
def setupInfrastructure() = {
QueueService.createQueue(YotascaleCostProcessing.INTERNAL_COST_REQUESTS)
QueueService.createQueue(YotascaleCostProcessing.INTERNAL_COST_UPDATES)
}
}
当我从另一个包中的另一个 class 执行 YotascaleCostProcessing.INTERNAL_COST_UPDATES 时,我收到错误 "not found: value YotascaleCostProcessing",即使 YotascaleCostProcessing 的导入在那里。唯一可行的方法是当我这样做时:new YotascaleCostProcessing().YotascaleCostProcessing.INTERNAL_COST_UPDATES
package com.yotascale.service.cost.setup;
import com.yotascale.YotascaleCostProcessing
class MetadataNotificationConfiguringActor(message:Message) extends UntypedActor {
def configureBucket() = {
val realtimeupdates = QueueService.getQueueURL(YotascaleCostProcessing.INTERNAL_COST_REQUESTS)
}
}
您只需输入
Foo.counter
喜欢
import test.Foo
object Test extends App {
println(Foo.counter)
}
和
package test
object Foo {
var counter = 0
}
您的问题是您的对象定义在 class 定义中。对象在 Scala 中只是单例 class,所以你的定义就像
class YotascaleCostProcessing extends YotascaleActorSystem{
class YotascaleCostProcessing$ {
val INTERNAL_COST_REQUESTS = "internal-cost-requests"
val INTERNAL_COST_UPDATES = "internal-cost-updates"
}
val YotascaleCostProcessing = new YotascaleCostProcessing$()
}
如果没有 YotascaleCostProcessing 实例,您将无法访问它