如何在 scala native 中按名称访问结构成员?
How to access struct members by name in scala native?
来自 https://scala-native.readthedocs.io/en/latest/ 的 scala 本机文档,这是访问结构成员的方法:
type Vec = CStruct3[Double, Double, Double]
val vec = stackalloc[Vec] // allocate c struct on stack
vec._1 = 10.0 // initialize fields
vec._2 = 20.0
vec._3 = 30.0
length(vec) // pass by reference
scala native 是否提供了一种通过名称而不是索引访问结构成员的方法?如果没有,是否计划将其作为未来的增强功能?
我在 github 的问题跟踪器中没有找到相关问题。
目前不支持按名称访问器,但将来我们想改变这一点,目标是使用普通大小写 classes/classes 和 @struct 注释而不是当前的 CStruct 类型。作为一种变通方法,目前的一个好的做法是为您的结构创建扩展方法/隐式 class 以按名称访问字段,这是一个示例 https://github.com/scala-native/scala-native/blob/cf0d7db6ee6133de8b9258b7dacceb39fa25c825/posixlib/src/main/scala/scala/scalanative/posix/signal.scala#L322
来自 https://scala-native.readthedocs.io/en/latest/ 的 scala 本机文档,这是访问结构成员的方法:
type Vec = CStruct3[Double, Double, Double]
val vec = stackalloc[Vec] // allocate c struct on stack
vec._1 = 10.0 // initialize fields
vec._2 = 20.0
vec._3 = 30.0
length(vec) // pass by reference
scala native 是否提供了一种通过名称而不是索引访问结构成员的方法?如果没有,是否计划将其作为未来的增强功能?
我在 github 的问题跟踪器中没有找到相关问题。
目前不支持按名称访问器,但将来我们想改变这一点,目标是使用普通大小写 classes/classes 和 @struct 注释而不是当前的 CStruct 类型。作为一种变通方法,目前的一个好的做法是为您的结构创建扩展方法/隐式 class 以按名称访问字段,这是一个示例 https://github.com/scala-native/scala-native/blob/cf0d7db6ee6133de8b9258b7dacceb39fa25c825/posixlib/src/main/scala/scala/scalanative/posix/signal.scala#L322