表达式类型 bool 在没有更多上下文的情况下是模棱两可的
Posted
技术标签:
【中文标题】表达式类型 bool 在没有更多上下文的情况下是模棱两可的【英文标题】:Expression type bool is ambiguous without more context 【发布时间】:2018-05-07 09:51:12 【问题描述】:以下代码用于Swift 2
:
let endpoint = EndpointManager(endpoint: userType == .Pro ? .ProFollowing(identifier, url) : .FanFollowing(identifier, url), method: .get, parameters: nil)
现在它给出了错误:
以下解决方案对我有用:
var following : Endpoint
if userType == .pro
following = Endpoint.proFollowing(identifier,url)
else
following = Endpoint.fanFollowing(identifier,url)
let endpoint = EndpointManager(endpoint: following, method: .get, parameters: nil)
【问题讨论】:
添加更多代码,例如userType
。
您不应该使用这样的长行代码。太坏了。请先将代码分开。
这样写: let endpoint = EndpointManager(endpoint: (userType == .Pro) ? (.ProFollowing(identifier, url)) : (.FanFollowing(identifier, url)), 方法: .get,参数:无)。
没有解决错误
如果我创建它需要的类型,这段代码对我来说很好。我怀疑您的一些枚举案例已重命名为前导小写。检查.Pro
不是不是.pro
和.ProFollowing
现在不是.proFollowing
等。否则,将其分解为包含类型定义的示例(我怀疑创建该示例将解决你的问题)
【参考方案1】:
你必须用括号包裹布尔参数:
let isProFollowing = userType == .Pro ? .ProFollowing(identifier, url)
let following: YourEnumType = isProFollowing ? .ProFollowing(identifier, url) : .FanFollowing(identifier, url)
let endpoint = EndpointManager(endpoint: following, method: .get, parameters: nil)
冒号会混淆你的 XCode
【讨论】:
@PujaJadhav 我已经更改了代码。使用我更新的帖子 @Vyacheslav Swift 4 支持非括号内联 ifs。 @staticVoidMan 有时表达式可能太复杂而无法解析。 @Vyacheslav 我讨厌内联 if,所以我避免使用它们,但您的回答表明这是不允许的/不可能的。只是想指出这一点。 @staticVoidMan 你的意思是let following =
类型定义吗?以上是关于表达式类型 bool 在没有更多上下文的情况下是模棱两可的的主要内容,如果未能解决你的问题,请参考以下文章
Alamofire 类型的表达式在没有更多上下文的情况下是模棱两可的