ios - Swift 中数字和字符串的通用总和
问题描述
我有这个函数,它返回数字的总和
func sum<T: Numeric>(_ a: T, _ b: T) -> T {
return a + b
}
我需要改进这个函数,以便在不重载的情况下通过这个函数返回字符串的连接。我探测使用 RangeReplaceableCollection,但我不能将此协议与 Numeric 协议一起使用。
例如:
sum(2, 3) -> 5
sum(1.5, 2.4) -> 3.9
sum("abc", "def") -> "abcdef"
解决方案
要在这种情况下使用一个通用函数,您需要找到一种可以用作通用类型约束的通用行为。在您的情况下,您可以(但不应该)这样做:
不要这样做
extension String: AdditiveArithmetic {
// some stupid placeholders, as there is no obvious behavior for that :D
public static func - (lhs: String, rhs: String) -> String {
lhs
}
public static var zero: String {
""
}
}
func sum<T: AdditiveArithmetic>(_ a: T, _ b: T) -> T {
a + b
}
print(sum("LOl", "KEK")) // LOLKEK
print(sum(1, 2)) // 3
我建议只是为该特定情况添加一个新函数
func sum(_ a: String, _ b: String) -> String {
a + b
}
推荐阅读
- php - 在 html标签中显示来自 curl 请求的图像
- apache-kafka - Kafka 消费者何时重试?
- ffmpeg - FFMPEG 在剪辑结束时切断音频
- apache-kafka - LogCompaction and consumer in Kafka
- r - Create sequence of values based on multiple column values in R
- node.js - How do I get my async function to return values not a promise?
- makefile - ocamlbuild: Nothing to be done for `all'
- botframework - 是否可以在自适应卡上实现简单的计数器?就像每次单击提交按钮时,文本块中的值都会增加
- solr - SOLR 索引任意数据
- google-cloud-platform - 如何从命令行设置/获取 json 格式的气流变量