【问题标题】:How to access struct members by name in scala native?如何在scala native中按名称访问结构成员?
【发布时间】:2021-11-29 00:06:36
【问题描述】:

来自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 的问题跟踪器中没有找到相关问题。

【问题讨论】:

    标签: struct member ffi language-interoperability scala-native


    【解决方案1】:

    目前不支持按名称访问器,但是在未来我们想改变它,目标是使用带有 @struct 注释的普通案例类/类,而不是当前的 CStruct 类型。作为一种解决方法,目前一个好的做法是为您的结构创建扩展方法/隐式类以按名称访问字段,这是一个示例https://github.com/scala-native/scala-native/blob/cf0d7db6ee6133de8b9258b7dacceb39fa25c825/posixlib/src/main/scala/scala/scalanative/posix/signal.scala#L322

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多