与Calling a global function which has the same name as a member function直接相关,我想知道如何在我自己的模块中调用全局函数。
我有一个名为Parsing的项目,它是一个Cocoa框架。我的Xcode目标的名称是Parsing。
我在框架级别有一个名为failure的函数,我试图从一个具有相同名称的类型的成员中调用它。
我显然可以通过更改名称来解决这个问题;但我更好奇为什么合格的名字不适合我。
我在以下代码中收到编译错误Use of unresolved identifier 'Parsing'
:
import Foundation
//import Parsing;
func failure<T>() -> ParserOf<T> {
return ParserOf { inp in nil }
}
class ParserOf<T> {
let _parser:String -> (T, String)?;
private init(_ p:String -> (T, String)?) {
_parser = p;
}
func parse(s:String) -> (T, String)? {
return _parser(s);
}
class func failure() -> ParserOf<T> {
return Parsing.failure(); // compile error
}
}
如果我取消注释import Parsing
行,那么我得到一个编译器错误,显示Cannot load underlying module for 'parsing'
看起来有点奇怪,因为错误消息中名称的大小与实际的大小不匹配名。
答案 0 :(得分:3)
我通常通过导入框架来执行此操作,就像您在评论代码中所做的那样:
import Parsing
然后使用全名,包括命名空间(模块),再次像你一样:
Parsing.failure()
您应该检查:
public
Parsing
)是正确的最后,如果您更改class func failure()
方法的名称,它是否有效?