swift - 是否可以在 Swift 中创建具有 Self 或关联类型要求的通用计算属性,如果可以,如何?
问题描述
考虑以下:
protocol SomeProtocol: Equatable {}
// then, elsewhere...
var someValue: Any?
func setSomething<T>(_ value: T) where T: SomeProtocol {
someValue = value
}
func getSomething<T>() -> T? where T: SomeProtocol {
return someValue as? T
}
这些函数工作正常,但本质上类似于计算属性。有什么方法可以实现以下内容?
var something<T>: T where T: SomeProtocol {
get { return someValue as? T }
set { someValue = newValue }
}
感谢您的阅读。抱歉,如果这个问题已经在别处问过,我已经搜索过,但有时我的搜索功能很弱。
解决方案
您需要在泛型类型上定义计算属性,计算属性本身不能定义泛型类型参数。
struct Some<T:SomeProtocol> {
var someValue:Any
var something:T? {
get {
return someValue as? T
}
set {
someValue = newValue
}
}
}
推荐阅读
- php - 我被难住了:如何使用 PHP Mailer 发送 HTML 表单
- java - 之后计算数字。(点)在java中
- c# - 在需要逐行运行的foreach循环中运行两个DataGridView
- rust - 当`cargo install`由于系统配置问题而失败时,如何避免重建依赖关系?
- amazon-web-services - 仅针对一个 lambda 覆盖授权者?
- python - 使用 django 迁移时出现 ProgrammingError 42000
- python - 尽管有种子,但 Numpy 会产生不同的随机数
- amazon-web-services - CloudFormation 堆栈资源
- spring - 如何在 Spring Boot 中将 thymeleaf HTML 模板呈现为字符串?
- c# - 如何在 C# 中使用子类属性