在Swift中设置导入的C结构的`init`属性

时间:2019-04-10 08:45:16

标签: swift

我已将C结构导入到我的Swift项目中,但是无法获取或设置导入结构上的init属性,出现以下错误:

  错误:'init'是该类型的成员;使用'type(of:...)'初始化具有相同动态类型的新对象

原始的C结构类似于:

struct test_t {
  int init;
};

和失败的我的Swift代码如下:

var t = test_t()
let i = t.init      // error thrown here
t.init = 10         // error thrown here

我可以理解名称是个问题,所以还有其他方法可以在Swift中为结构设置属性,也许涉及一些元编程或动态调度?

1 个答案:

答案 0 :(得分:1)

您可以声明变量名以使用保留的关键字,方法是在变量名周围使用反引号,例如

struct Test {
    var `init`:Int
}

访问/调用该属性/方法时,可以对名称为保留关键字的导入属性/方法进行调用。

var t = test_t()
let i = t.`init`
t.`init` = 10