swift - swift 枚举大小写中的可选参数

标签 swift enums

在 swift 中,一个函数可以有一个带有默认值的可选参数,例如:

func f(a:Int, b:Int?=nil) {}

f(1);
f(1,2);

我想用枚举的关联值来做到这一点。关注这篇关于 type safe url routes 的帖子,我想要一个可以接受可选参数的路由,例如:

enum StopPoint {
    case Search(query:String, limit:Int?=nil)
}

但是它说我不能为元组中的参数设置默认值。然而,有可能出现诸如 case Arrivals(stopId:Int) 之类的情况,但一般情况下不可能有一个带有一个命名参数的元组。

那么有没有可能有一个带有默认参数的枚举,关联的值是否是一个元组?

最佳答案

你可以做的是:

enum StopPoint {
    case Search(query: String, limit: Int?)

    init(query: String, limit: Int? = nil) {
        self = .Search(query: query, limit: limit)
    }
}

let foo = StopPoint(query: "default")             // Search("default", nil)
let bar = StopPoint(query: "special", limit:  42) // Search("special", Optional(42))

关于swift - swift 枚举大小写中的可选参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34456531/

相关文章:

ios - 导航栏标题 - 更改字体而不更改大小

ios - 数据下载完成后如何重新加载 uipageviewcontroller 以考虑新数据。 swift 3

ios - 枚举数组和枚举字典之间的映射

mongodb - 按字符串枚举值对 mongo 结果进行排序

java - 使用spring初始化java枚举中的字段

swift - 使用 PACT 的 XCUITest 不返回模拟网络响应

swift - 如何在具有多行自动换行的 UITextView 中找到光标 Y 位置?

swift - 在 swift 中使用 720p、1080p 作为枚举

vba - 如何将所有类硬编码值保存在一个地方

ios - 从另一个 View Controller 访问数组数据