【问题标题】:Swift 5 - Generics - RangeReplaceableCollectionSwift 5 - 泛型 - RangeReplaceableCollection
【发布时间】:2021-01-29 22:14:47
【问题描述】:

为什么这段代码返回一个“引用运算符函数 '+' on 'RangeReplaceableCollection' 要求 'T' 符合 'RangeReplaceableCollection' 消息?我真的找不到问题所在!

func addValues <T>(_ valA: T, _ valB: T) -> T {
   return(valA + valB)
}
     
addValues(1, 2)
addValues(1.0, 2.0)

提前致谢

【问题讨论】:

  • 你为什么认为任何两个东西都可以相加?
  • 一个函数即使使用泛型也能够相加两个数字似乎是合乎逻辑的。
  • valAvalB 不一定是数字。他们是T,可以是anything
  • 这能回答你的问题吗? How do I add two generic values in Swift?
  • 好的。谢谢。我现在知道了。来自法国的问候。

标签: generics swift5


【解决方案1】:

我相信这是由于在正文中使用了+ 运算符。 + 类型为 AdditiveArithmetic 的运算符也要求两个参数符合 AdditiveArithmetic。因此,如果您将函数签名更新为以下内容,则应该可以解决问题。

func addValues &lt;T AdditiveArithmetic &gt;(_ valA: T, _ valB: T) -&gt; T {

至于为什么选择提及RangeReplaceableCollection ,这可能只是来自Apple的一个糟糕的警告。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-17
    相关资源
    最近更新 更多