Swift 相当于 Haskell 显示
Swift equivalent of Haskell Show
Swift 等价于 Haskell Show 以打印 Enumerations with cases 中的值是什么?我读过 Show 与 Java toString() 方法非常相似并且 Swift CustomStringConvertible 可能是一个不错的选择。
例如,在 Fraction 实例上使用 print 会显示:
> Fraction(numerator: 1, denominator: 2)
我不想打印整个案例,而是只想打印中间有斜杠的数字。例如“1/2”。
我当前的代码如下:
enum MyNum: Equatable {
case Fraction(numerator: Int, denominator: Int)
case Mixed(whole: Int, numerator: Int, denominator: Int)
}
extension MyNum: CustomStringConvertible {
var description: String {
return "(\(Fraction.numerator) / \(Fraction.denominator))"
}
}
var testFraction= MyNum.Fraction(numerator: 1, denominator: 2)
print(testFraction)
您还需要在 description
中使用 switch 语句并读取关联值
extension MyNum: CustomStringConvertible {
var description: String {
switch self {
case .Fraction(let n, let d):
return "\(n) / \(d)"
case .Mixed(let w, let n, let d):
return "\(w) \(n) / \(d)"
}
}
请注意,在 swift 中,枚举项应以小写字母开头,因此应为 fraction
和 mixed
Swift 等价于 Haskell Show 以打印 Enumerations with cases 中的值是什么?我读过 Show 与 Java toString() 方法非常相似并且 Swift CustomStringConvertible 可能是一个不错的选择。
例如,在 Fraction 实例上使用 print 会显示:
> Fraction(numerator: 1, denominator: 2)
我不想打印整个案例,而是只想打印中间有斜杠的数字。例如“1/2”。
我当前的代码如下:
enum MyNum: Equatable {
case Fraction(numerator: Int, denominator: Int)
case Mixed(whole: Int, numerator: Int, denominator: Int)
}
extension MyNum: CustomStringConvertible {
var description: String {
return "(\(Fraction.numerator) / \(Fraction.denominator))"
}
}
var testFraction= MyNum.Fraction(numerator: 1, denominator: 2)
print(testFraction)
您还需要在 description
中使用 switch 语句并读取关联值
extension MyNum: CustomStringConvertible {
var description: String {
switch self {
case .Fraction(let n, let d):
return "\(n) / \(d)"
case .Mixed(let w, let n, let d):
return "\(w) \(n) / \(d)"
}
}
请注意,在 swift 中,枚举项应以小写字母开头,因此应为 fraction
和 mixed