对于没有默认情况的Double类型,swift开关可以是穷举吗?

对于没有默认情况的Double类型,swift开关可以是穷举吗?,第1张

概述对于没有默认情况的Double类型, swift开关可以是穷举吗? 此开关(没有默认情况)给出错误:开关必须是详尽的: var minY = 1.0 switch minY { case -(Double.infinity)..<0.9: yAxisMinimum = 0.0 case (0.9..<0.99): yAxisMinimum 对于没有默认情况的Double类型,swift开关可以是穷举吗?

此开关(没有默认情况)给出错误:开关必须是详尽的:

var minY = 1.0    switch minY {    case -(Double.infinity)..<0.9:        yAxisMinimum = 0.0    case (0.9..<0.99):        yAxisMinimum = 0.9    case (0.99..<0.999):        yAxisMinimum = 0.99    case (0.999..<0.9999):        yAxisMinimum = 0.999    case (0.9999...Double.infinity):        yAxisMinimum = 0.9999    }

但是这个带有(无用的)默认情况的开关可以工作:

var minY = 1.0    switch minY {    case -(Double.infinity)..<0.9:        yAxisMinimum = 0.0    case (0.9..<0.99):        yAxisMinimum = 0.9    case (0.99..<0.999):        yAxisMinimum = 0.99    case (0.999..<0.9999):        yAxisMinimum = 0.999    case (0.9999...Double.infinity):        yAxisMinimum = 0.9999    default:        yAxisMinimum = 0.0    }

我尽量避免使用我的开关的默认情况,但不知道是否可以使用Double.

没有 because only enum types can be exhaustively checked.

但在这种情况下,问题甚至更深.即使整数可以被彻底检查,你仍然无法在没有where子句的情况下彻底检查Double.其中一个选项是.nan(“不是数字”),你没有考虑.所以你可能会认为只是添加这种情况:

case .nan:    yAxisMinimum = .nan

这不仅不会使它变得详尽,它甚至不会按照你期望的方式工作.

var minY = Double.nanswitch minY {case -(Double.infinity)..<0.9:    yAxisMinimum = 0.0// ...case .nan:    yAxisMinimum = .nandefault:    yAxisMinimum = 0}yAxisMinimum // 0

为什么?因为这:

var minY = Double.nanminY == .nan   // false

NaN与一切都不相同,包括NaN.所以没有办法直接将它包含在switch语句中.你必须使用where子句:

case _ where minY.isNaN:    yAxisMinimum = .nan

这肯定超出了编译器的验证能力.

总结

以上是内存溢出为你收集整理的对于没有默认情况的Double类型,swift开关可以是穷举吗?全部内容,希望文章能够帮你解决对于没有默认情况的Double类型,swift开关可以是穷举吗?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1089572.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存