首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通用RawRepresentable协议属性

通用RawRepresentable协议属性
EN

Stack Overflow用户
提问于 2017-03-31 01:17:59
回答 1查看 539关注 0票数 0

我希望写一个protocol,它将与各种测量结构一起使用。这些结构中的每一个都有自己的Units枚举,用于定义要比较的单位类型:

代码语言:javascript
复制
public enum TestUnits: Double {
  case foo = 100.0
  case var = 1000.0
}

我正在寻找一种创建通用协议属性的方法,每个Struct都可以设置自己的单元枚举,以便进行比较和格式化:

代码语言:javascript
复制
protocol UnitMeasuable {

   var measurementType : SOMETHING<RawRepresentable> { get} 

   func someFormattingFunc(type: measurementType) -> String
}

我只是不清楚如何声明measurementType,以便它将由单个结构设置。

谢谢

EN

回答 1

Stack Overflow用户

发布于 2018-02-08 11:02:52

在这种情况下,我希望你有两个选择。

在您的协议上使用associatedtype

代码语言:javascript
复制
 protocol UnitMeasuable {
 associatedtype Something where Something: RawRepresentable

   var measurementType: Something { get} 
   func someFormattingFunc(type: Something) -> String
}

或者忘记变量(我看不出你应该有那个属性,但我真的不知道你的计划是什么),在函数中使用泛型。

代码语言:javascript
复制
protocol UnitMeasuable {
   func someFormattingFunc<Type: RawRepresentable>(type: Type) -> String
}    

希望这能有所帮助!

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43124425

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档