swift - 为什么 Numeric 在 Swift 中使用负值?
问题描述
我做了这个 2 函数,两者工作相同,我期待使用负数时带有数字协议的函数出错,但错误没有发生!现在两者都有效,为什么会这样?当我需要 Numeric 以及何时需要 SignedNumeric 时?
func addition<T: Numeric>(a: T, b: T) -> T {
return a + b
}
func addition<T: SignedNumeric>(a: T, b: T) -> T {
return a + b
}
用例:
let add = addition(a: -3, b: -2)
解决方案
带有协议的 FuncNumeric
不应在您的用例中引发任何错误,因为它不排除任何负数。相反,这将引发错误:
func addition<T: UnsignedInteger>(a: T, b: T) -> T {
return a + b
}
let add = addition(a: -3, b: -2)
推荐阅读
- android - 即使片段没有使用导航组件出现,也会调用片段中的 onSaveInstanceState()
- python - 在 Python Pandas 中填充缺失的数据并将行转换为列
- regex - 正则表达式格式“YYYY/NNNN”或“YYYY/NNNN/国家代码”
- c# - 我无法获得适合我的应用程序的教程。如何将通用 URL 映射到用 C# 编写的 API 端点的 HTTP 方法?
- python - Python:为什么一个函数能够改变另一个函数中的数组?我想这是范围的问题
- amazon-web-services - 从 cloudformation 创建时,AWS 负载均衡器列表器规则给出错误 500(内部服务器错误)
- python - 在 Python 中将 BMI 舍入为 2 位数字
- r - R 4.0.3 中的 R 包“并行”
- java - 将字符更改为编码 windows-1251
- python - Python + 硒。CSS 选择器或 Xpath