这是一个由两部分组成的问题,到目前为止,我无法在“The Swift Programming Language”中找到答案。
第一个问题是:
允许哪些字符作为Swift中方法或函数的名称?
是否允许使用所有unicode字符?
问题的第二部分是:
是否有保留名称或字符等例外?
是否有某个官方列表?
我问的原因是我试图编写这样的函数而收到错误:
func ?(object: AnyObject) -> AnyObject {
// some function
return object
}
但是当我尝试使用其他非拉丁字符(如ü,ä,ö)时,以下不会抛出错误:
func fünctiön(object: AnyObject) -> AnyObject {
// some function
return object
}
所以,这让我很困惑。
答案 0 :(得分:4)
参考书:
标识符以大写或小写字母A到Z开头, 一个下划线(_),一个非组合的字母数字Unicode字符 基本多语言平面,或基本外的字符 不在私人使用区域的多语言平面。第一次之后 字符,数字和组合Unicode字符也是允许的。
词汇结构部分实际列出了第一个字符和其他字符允许的所有Unicode范围。
原因很明显 - 编译器必须区分标识符和运算符。允许标识符中的标点字符会使标识符和操作符之间无法区分。
答案 1 :(得分:0)
关于问题的第二部分,文档有一个列表,目前是:
以下关键字已保留,不得用作 标识符,除非它们使用反引号进行转义,如上所述 在标识符中。
声明中使用的关键字:class,deinit,enum,extension,func, import,init,let,protocol,static,struct,subscript,typealias,and 变种。
语句中使用的关键字:break,case,continue,default,do, 否则,通过,if,in,for,return,switch,where和while。
表达式和类型中使用的关键字:as,dynamicType,is,new, 超,自我,自我,类型,_ _ COLUMN _ _,_ _ FILE _ _,_ _ FUNCTION _ _,和 _ _ LINE _ _。
在特定上下文中保留的关键字:associativity,didSet,get,infix,inout,left,mutating,none,nonmutating, operator,override,postfix,precedence,prefix,right,set,unowned, 无主(安全),无主(不安全),弱者和意志集。
在它们出现在语法中的上下文之外,它们可以用作标识符。
摘自:Apple Inc.“The Swift Programming Language。”iBooks。 https://itun.es/gb/jEUH0.l