Swift中的编程

来自C,我试图在 Swift做一些元编程.例如,我想实现一个添加两个数字的元函数.我已经尝试过这样的事情:
protocol IntWrapper {
    class var value: Int { get }
}

struct A: IntWrapper {
    static let value = 5
}

struct B: IntWrapper {
    static let value = 7
}

struct Sum<T: IntWrapper,U: IntWrapper>: IntWrapper {
    static let value = T.value + U.value
}

然而,这不起作用:Xcode抱怨T.Type没有成员值(或者有时候崩溃)

如何实现这样的功能

静态存储的属性并不(通常)支持泛型对象.当我把你的代码放在一个操场,我实际上得到这个错误
Playground execution Failed: <EXPR>:23:5: error: static variables not yet supported in generic types
    static let value = T.value + U.value
    ^~~~~~

你可以通过使用计算的属性解决这个问题(这可能一直是你想要的)

struct Sum<T: IntWrapper,U: IntWrapper>: IntWrapper {
    static var value: Int {
        return T.value + U.value
    }
}

注意:由于它是一个计算属性,您需要使用var声明值,而不是let.

通过这些更改,println(Sum< A,B> .value)按照您的期望打印12张照片.

相关文章

软件简介:蓝湖辅助工具,减少移动端开发中控件属性的复制和粘...
现实生活中,我们听到的声音都是时间连续的,我们称为这种信...
前言最近在B站上看到一个漂亮的仙女姐姐跳舞视频,循环看了亿...
【Android App】实战项目之仿抖音的短视频分享App(附源码和...
前言这一篇博客应该是我花时间最多的一次了,从2022年1月底至...
因为我既对接过session、cookie,也对接过JWT,今年因为工作...