如何使我的泛型参数在Swift中符合OR,如何找到参数的构象?

  • 本文关键字:参数 何找 OR 泛型 何使我 Swift swift
  • 更新时间 :
  • 英文 :


我想建立一个接受某种协议的函数,如果其中一个协议通过,函数应该工作,我对这个函数有2个问题,首先我不知道如何应用协议,其次,我不知道如何才能找到函数内的传入值符合哪个协议,然后我可以运行正确的代码!

func printFunction<T: CustomStringConvertible OR CustomDebugStringConvertible>(value: T) {    // 1: issue with OR!
if value.description {              // 2: issue with finding out which protocol conformation is!
print(value.description)
}
else if value.debugDescription {    // 3: issue with finding out which protocol conformation is!
print(value.debugDescription)
}
else {
print("not printable!")
}

}

协议一致性没有OR操作符。协议就像一个你不能遵守的合同。你需要两者都符合。您需要实现两个方法。每人一个。顺便说一句,当使用CustomStringConvertible:

时,不需要显式地键入描述。
func printFunction<T: CustomStringConvertible>(value: T) { print(value) }

func printFunction<T: CustomDebugStringConvertible>(value: T) { print(value.debugDescription) }

相关内容

最新更新