所以我创建了一个新的Xcode项目,并写了这个Podfile:
use_frameworks!
target 'Repro' do
pod 'Alamofire'
pod 'Result'
end
Run Code Online (Sandbox Code Playgroud)
然后我跑了pod install,打开了工作区,并创建了一个包含以下内容的新文件:
import Alamofire
import Result
private func something(request: Request) -> Result<Bool, NSError> {
fatalError()
}
Run Code Online (Sandbox Code Playgroud)
我尝试构建这个,但Xcode产生了错误'Result' is ambiguous for type lookup in this context.所以我尝试了明显的修复:
import Alamofire
import Result
private func something(request: Request) -> Result.Result<Bool, NSError> {
fatalError()
}
Run Code Online (Sandbox Code Playgroud)
但这给了我错误Reference to generic type 'Result' requires arguments in <...>,好像Swift正在将模块名称解析为类型名称.
什么是非明显的修复?
nol*_*anw 11
如果您直接导入结果模块的Result类型,它将覆盖Alamofire的Result类型.您仍然可以使用其合格的名称访问Alamofire:
import Alamofire
import enum Result.Result
let a: Alamofire.Result<T, ErrorType> // Alamofire's Result
let r: Result<T, ErrorType> // Result module's Result
Run Code Online (Sandbox Code Playgroud)
在看到语言参考中提到的详细导入后,我通过反复试验找到了这个.我不知道类型名称解析是否记录在任何地方以这种方式工作,所以它可能会在没有太多通知的情况下改变.
| 归档时间: |
|
| 查看次数: |
3744 次 |
| 最近记录: |