【问题标题】:How to define an explicit casting operator in swift?如何在 swift 中定义显式转换运算符?
【发布时间】:2014-10-16 04:05:43
【问题描述】:

背景

我有一个类想要隐藏实现细节。

class Foo
{
  var i : Int
}

let f = Foo()

有没有办法定义一个显式转换运算符,以便在 f as Int 上调用?

如果没有,是否有我应该使用的规范方法名称,例如 asInt() -> Int

【问题讨论】:

  • 对于 any 类型,您不能以这种方式使用as。你不能说4 as Double 那么你到底为什么认为你的对象有可能呢?这不是 as 在 Swift 中的含义。

标签: swift casting


【解决方案1】:

我不知道这是你想要的,但你可以像 Int 初始化器一样实现强制转换:

extension Int {
    init(_ foo:Foo) {
        self = foo.i
    }
}

let f = Foo()
f.i = 12
let intVal = Int(f) // -> 12

【讨论】:

  • 这似乎最接近我正在寻找的 - ty
猜你喜欢
  • 2012-08-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多