lia*_*ang 0 variables scala definition
在 scala 中,我们可以定义变量,如:
val a=10或var a=10。
无论如何我们可以检查 a 是 aval还是以var编程方式?
Scala 是一种面向对象的语言。这尤其意味着您只能操作对象。
变量不是 Scala 中的对象(就像几乎所有编程语言一样),因此,例如,您无法在变量上调用方法来询问它是 avar还是 a val(因为您只能在对象,而变量不是对象),并且无法将变量传递给方法来询问该方法变量是 aval还是 a var(因为您只能将对象作为参数传递,而变量不是对象) .
同样,这并不是 Scala 特有的,这适用于绝大多数编程语言。即使在像 Ruby 这样具有非常强大的动态元编程能力的编程语言中,变量也不是对象,也不能被反映。
但是等等,您可能会说,类也不是 Scala 中的对象,但是我可以使用scala.Predef.classof[T]! 实际上你可以,但有类和变量之间的基本差异:类是运行时实体,因此,即使他们不存在为对象,他们这样做至少存在在运行时。变量是纯编译时构造,它们在运行时不存在。
所以,唯一的办法,你可以在一个变量获得在所有使用编译时的反射。对于您想要做的任何事情,这很可能是完全矫枉过正。
所以,回答你的问题:
无论如何我们可以检查 a 是 a
val还是以var编程方式?
非常简短的回答:不。
非常简短的回答:var无论如何你都不应该使用。如果你遵循这个建议,这个问题就变得没有实际意义了。
简短回答:如果您的局部变量范围如此之大且令人费解,以至于您甚至无法弄清楚变量是 avar还是 a ,val那么您将遇到更大的问题。
简单的回答:不。
稍微详细一点的答案:不,不是在运行时。
非常复杂的答案:使用Compile-Time Reflection可能是可能的。