我们有enum:
enum Line {
case horizontal(CGFloat)
case vertical(CGFloat)
case diagonal(CGFloat, CGFloat)
}
默认情况下,我们可以使用3 ways to get value from ValueAssociatedEnum
但所有这些方法看起来都很可怕。
恕我直言。
问题是:
是否可以为enum创建通用扩展以使用以下类似语法:
样品1:
let lineH = Line.horizontal(10)
if let val = lineH.is(Line.horizontal) {
print("lineHorizontalValue: \(val)") // lineHorizontalValue: 10
}
样品二:
let lineD = diagonal(10, 20)
if let (point1, point2) = lineD.is(Line.diagonal) {
print("lineDiagonalValue: \(point1), \(point2)") // lineDiagonalValue 10, 20
}
2条答案
按热度按时间s3fp2yjn1#
同一个函数不能有不同的返回类型,你需要的是:
您可能还需要像这样的操作符:
扩展如下:
你可以这样写代码:
2ul0zpep2#
我读过很多消息,说同一个函数不可能有不同的返回类型,但这是可能的,正如你在这里看到的:)
基于Jessy's code:
注意事项:
这是无用的,但仍然,这是一个非常有趣的实验。非常感谢,杰西和扫地机。
使用示例: