我想这是一个非常基本的问题,但是如何使用变量访问类成员? 我想要实现的就是这样的。
//Scala
class Foo {
var sample:String = _
var sample2:String = _
}
//in another Class
val foo = new Foo()
val key = bar match {
case "something" => "sample"
case _ => "sample2"
}
//want to access foo.sample or foo.sample2 by using key variable.
在 JavaScript 中写为 foo[key]
提前致谢。
最佳答案
如果您想要 javascript 语义(例如按名称访问成员),请查看Dynamic
-trait。
使用Dynamic
,您可以执行以下操作:
class MyDynamic extends Dynamic {
var map = Map.empty[String, Any]
def selectDynamic(name: String) =
map get name getOrElse sys.error("method not found")
def updateDynamic(name: String)(value: Any) {
map += name -> value
}
}
scala> val d = new MyDynamic
d: MyDynamic = MyDynamic@7711a33f
scala> d.foo
java.lang.RuntimeException: method not found
scala> d.foo = "blah"
d.foo: Any = "blah"
scala> d.foo
res56: Any = "blah"
您可以通过名称调用您的方法:
scala> d.selectDynamic("foo")
res54: String = foo
关于javascript - Scala 方式编写 JavaScript 的 'foo["bar"]',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33471208/