Semver 是 语义化版本控制 的 Swift 实现。
import Semver
// A leading "v" character is ignored.
let version = Semver("v1.3.8-rc.1+build.3")!
version > Semver("1.0.2+39f1d74")! // true
Equatable 的一致性遵循 Semver 的语义相等性,并忽略构建元数据。 这也会影响 Comparable 和 Hashable。
您可以使用 === 和 !== 来考虑构建元数据。
let v1 = Version("1.0.0+100")!
let v2 = Version("1.0.0+200")!
v1 == v2 // true
v1 <= v2 // true
v1.hashValue == v2.hashValue // true
Set([v1, v2]).count == 1 // ❗️true
v1 === v2 // false
v1 !== v2 // true
字符串初始化器 Semver.init?(_:) 总是产生有效的版本(或 nil)。 字面量初始化器 Semver.init(stringLiteral:) 仅接受 StaticString,并在失败时崩溃。
但是,成员明智的初始化器 Semver.init(major:minor:patch:prerelease:buildMetadata:) 不对其字段执行有效性检查。 可能形成无效的版本。 您可以使用 Semver.isValid 手动验证版本。
let version = Semver(major: 0, minor: 0, patch: -1) // invalid version 0.0.-1
version.isValid // false
将项目添加到您的 Package.swift 文件
package.dependencies += [
.package(url: "https://github.com/ddddxxx/Semver", .upToNextMinor("0.2.0"))
]
将项目添加到您的 Cartfile
github "ddddxxx/Semver"
这是一个轻量级的库,仅包含一个文件。 您可以简单地复制/粘贴 Semver 文件 到您的项目中。
Semver 在 MIT 许可下可用。 请参阅 LICENSE 文件。