所以,让我说我有一个由三个元素组成的结构 - SPEED_OF_LIGHT,SPEED_OF_SOUND和SPEED_OF_PERSON,如下所示:
public struct Fast {
public let speed: Double
private init(speed: Double) {
self.speed = speed
}
public static let SPEED_OF_LIGHT = Fast(speed: 300000000)
public static let SPEED_OF_SOUND = Fast(speed: 340)
public static let SPEED_OF_PERSON = Fast(speed: 1.5)
}
如果我有两倍的让我们说340,我会如何迭代所有可能性,直到找到正确的匹配?为了准确显示我的意思,我有一个可以完成我想要的工作代码片段。这是在Java 中完成的。
public enum Fast {
SPEED_OF_LIGHT(300000000),
SPEED_OF_SOUND(340),
SPEED_OF_PERSON(1.5);
private double speed;
private Fast(double speed) {
this.speed = speed;
}
public static Fast getFast(double speed) {
for (Fast f : Fast.values()) {
if (f.speed == speed) return f;
}
throw new IllegalArgumentException();
}
}
在上述情况下,调用getFast(340)将返回SPEED_OF_SOUND。我如何在Swift中做类似的事情?
答案 0 :(得分:1)
你可能想要使用一个枚举(Swift也有它们),但没有相当于你调用来获取列表的values()
函数。
您必须使用完整列表向枚举中添加一个数组成员 - 这将是重复的情况,因此容易出错。
有关如何操作的详细信息,请参阅此答案:https://stackoverflow.com/a/24137319/3937
有些技巧/黑客试图获得像values
这样的东西,但是对于每个版本的swift来说它都不同,在我看来并不值得麻烦。