【发布时间】:2018-08-24 23:56:41
【问题描述】:
错误:
Precondition failed: Negative count not allowed: file /BuildRoot/Library/Caches/com.apple.xbs/Sources/swiftlang/swiftlang-900.0.74.1/src/swift/stdlib/public/core/StringLegacy.swift, line 49
代码:
String(repeating: "a", count: -1)
思考:
好吧,将某个字符串重复负数次是没有意义的。既然我们在 Swift 中有类型,为什么不使用 UInt?
这里有一些关于它的文档。
仅当您特别需要无符号整数类型时才使用 UInt 与平台的本机字大小相同。如果这不是 在这种情况下,首选 Int,即使要存储的值已知 是非负的。整数值的一致使用 Int 有助于代码 互操作性,避免了不同号码之间的转换 类型,并匹配整数类型推断,如类型安全中所述 和类型推断。
好吧,Int 是首选,因此 API 只是遵循规则,但为什么 Strings API 是这样设计的?为什么这个构造函数不是私有的,而带有UInt ro 的公共构造函数是这样的?有“真实”的原因吗?这是某种“未定义的行为”吗?
【问题讨论】:
标签: swift string int repeat uint