gpt4 book ai didi

scala - Scala 中等效的 JavaScript 括号表示法?

转载 作者:行者123 更新时间:2023-12-04 17:14:24 27 4
gpt4 key购买 nike

JavaScript 有对象的括号表示法,允许您使用变量访问属性,如下所示:

let x = {name : 'John', age: 21};
let y = 'age'
console.log(x[y])
//21

在 Scala 2 中访问类对象中的属性(获取类实例中的所有变量)是否有与此等效的方法?

最佳答案

因为所有案例类都从 Product 扩展而来我想知道您是否可以调用它的方法 productElement(1) 来获取它的值。我的意思是使用所需字段的索引来获取其值。

case class MyClass(cat: String, dogNum: Int )

val myClass = MyClass("white cat", 2)

println(myClass.productElement(1)) // prints 2
println(myClass.productElement(0)) // prints white cat

另外,使用模式匹配:

myClass match {

case MyClass(catField, dogNumField) =>
println(catField) // prints white cat
println(dogNumField) //prints 2

}

作为实现可能正在寻找的东西的另一种方式:

myClass.productIterator.foreach(member => println(member))

更新

“从 Scala 2.13 开始,您还可以检索 Product 的属性名称。” – 盖尔 J

所以你可以这样写:

val productSize = myClass.productArity


for (elementNum <- 0 to productSize-1){

println(myClass.productElementName(elementNum) + ": " + myClass.productElement(elementNum))

}

打印:

cat: white cat
dogNum: 2

关于scala - Scala 中等效的 JavaScript 括号表示法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68951433/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com