我正在尝试使用一些嵌套的enums
创建网络路由器。我如何构建它,以便仅显示buildURL
,get(sort..)
和search(query..)
。换句话说,我不希望SortType
(第4个选项)出现在这里。 。
作为一个例子,我可以调用它,而我不想这样做:let router = Food2ForkRouter.SortType.init(rawValue: "r")
从技术上讲,我可以在SortType
之外声明enum
,但是这样逻辑就少了,它在这里才有意义。如果我将enum
标记为private
,则会收到编译器错误,因为无法将其用作associated value
。
这是我的代码,您可以将其直接插入Playground:
enum Food2ForkRouter {
case search(query: String)
case get(sort: SortType) // <--- I want to be able to pass a SortType enum here
enum SortType : String {
case rating = "r"
case trendingness = "t"
}
var parameters : [String : String] {
switch self {
case .search(let query):
return ["q" : query]
case .get(let sort):
return ["sort" : sort.rawValue]
}
}
func buildURL() -> URL? {
/*......*/
return nil
}
}
答案 0 :(得分:0)
枚举没有构造函数,因此无法将其更改为fileprivate
。