如何解决Swift 相当于 Haskell Show
在带有 case 的枚举中打印值的 Haskell Show 的 Swift 等价物是什么?我读过 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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。