在 Swift 中将枚举与整数一起使用

问题描述 投票:0回答:3

我想知道如何限制可以作为参数传递给函数(或作为属性传递给类)的值集。或者,换句话说,我想要实现的逻辑实际上是让函数或类只接受特定的值。我想出了一个使用枚举的想法。但这里需要注意的是,我不能像这样将纯整数与“case”一起使用:

enum Measure {
    case 1, 2, 3
}

有什么办法可以实现我想要的吗?

ios swift macos integer
3个回答
11
投票
enum Measure:Int{
    case ONE = 1
    case TWO = 2
    case THREE = 3
}

//accept it as argument
func myMethod(measure:Measure){
    switch measure {
        case .ONE:...
        case .TWO:...
        case .THREE
    }
}

//call the method with some raw data
myMethod(Measure(rawValue:1)!)
//or call the method with 
myMethod(Measure.ONE)

0
投票

但是你为什么要尝试实施它呢?默认情况下,Swift 不允许传递比该函数或类定义中定义的参数更多或更少的参数。

因此,如果您有一个仅接受一个参数的简单函数,那么在调用您的函数时,没有人可以传递少于或多于一个的参数。如果他尝试这样做,那么 swift 编译器将不允许他/她这样做。

所以逻辑上的结论是你不需要开发类似的东西。

如果您的情况与我的想法不同,请通过添加评论或以更简单或易于理解的方式编写另一个问题来告诉我。


0
投票

这可能是一篇旧帖子,但我有完全相同的问题。似乎枚举中的每种情况都必须遵循变量的命名约定。我更喜欢使用数字而不是单词,并且我正在寻找以下枚举的良好替代品:

enum SpdLimit: CaseIterable {
    case 40, 50, 60, 70, 80, 90, 100, 110
}

后来我打算为不同的国家和司法管辖区提供这个枚举的不同版本(上面是kph;也会有mph)并且会有很多。我可以想到几种方法来做到这一点,但没有一种非常优雅(也许是数组?)。这是我的第一个应用程序,我想把它做好。

我没有创建新问题,因为上面的答案非常相关,我的问题的任何答案也适用于此处的原始问题。

如有任何意见,我们将不胜感激。

© www.soinside.com 2019 - 2024. All rights reserved.