Swift中的编程
发布时间:2020-12-14 05:21:19 所属栏目:百科 来源:网络整理
导读:来自C,我试图在 Swift做一些元编程.例如,我想实现一个添加两个数字的元函数.我已经尝试过这样的事情: protocol IntWrapper { class var value: Int { get }}struct A: IntWrapper { static let value = 5}struct B: IntWrapper { static let value = 7}stru
来自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张照片. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |