Если вы хотите реализовать что-то подобное в Swift, вы, вероятно, можете получить что-то вроде следующего:
struct Version: Comparable, Equatable {
static func == (lhs: Version, rhs: Version) -> Bool {
return lhs.maj == rhs.maj && lhs.min == rhs.min && lhs.patch == rhs.patch
}
static func < (lhs: Version, rhs: Version) -> Bool {
if lhs.maj < rhs.maj || lhs.min < rhs.min || lhs.patch < rhs.patch { return true }
return false
}
var maj: Int
var min: Int
var patch: Int
var formatted: String {
return "\(maj).\(min).\(patch)"
}
}
let v1 = Version(maj: 1, min: 2, patch: 2)
let v2 = Version(maj: 1, min: 2, patch: 2)
let v3 = Version(maj: 2, min: 2, patch: 2)
let v4 = Version(maj: 1, min: 3, patch: 2)
let v5 = Version(maj: 1, min: 2, patch: 3)
print (v1 == v2)
print (v1 == v3)
print (v1 > v2)
print (v1 > v3)
print (v1 > v4)
print (v1 > v5)
print (v3 > v4)
print (v3 > v5)
print (v1.formatted)
print (v2.formatted)
print (v3.formatted)
print (v4.formatted)
print (v5.formatted)