【问题标题】:Allowed method / function names in SwiftSwift 中允许的方法/函数名称
【发布时间】:2014-09-14 14:17:20
【问题描述】:

这是一个由两部分组成的问题,到目前为止,我在“Swift 编程语言”中找不到答案。

第一个问题是:
Swift 中允许哪些字符作为方法或函数的名称?
是否允许所有 unicode 字符?

问题的第二部分是:
是否有一些例外,例如保留名称或字符?
在某处是否有它们的官方列表?

我问的原因是我尝试编写这样的函数并收到错误

func ?(object: AnyObject) -> AnyObject {
    // some function
    return object
}

但当我尝试使用其他非拉丁字符(如 ü、ä、ö)时,它可以工作,以下 不会引发错误

func fünctiön(object: AnyObject) -> AnyObject {
    // some function
    return object
}

所以,这让我很困惑。

【问题讨论】:

标签: ios function methods swift


【解决方案1】:

关于你问题的第二部分,文档有一个列表,目前是:

以下关键字为保留关键字,不得用作 标识符,除非它们被反引号转义,如上所述 在标识符中。

声明中使用的关键字:class、deinit、enum、extension、func、 import、init、let、protocol、static、struct、subscript、typealias 和 变种。

语句中使用的关键字:break、case、continue、default、do、 else、fallthrough、if、in、for、return、switch、where 和 while。

表达式和类型中使用的关键字:as、dynamicType、is、new、 super、self、Self、Type、_ _ COLUMN _ _、_ _ FILE _ _、_ _ FUNCTION _ _ 和 _ _ 线 _ _。

在特定上下文中保留的关键字:associativity、didSet、get、infix、inout、left、mutating、none、nonmutating、 运算符,覆盖,后缀,优先级,前缀,右,集,无主, unowned(安全)、unowned(不安全)、weak 和 willSet。

在它们出现在语法中的上下文之外,它们可以用作标识符。

摘自:Apple Inc.“Swift 编程语言”。电子书。 https://itun.es/gb/jEUH0.l

【讨论】:

    【解决方案2】:

    来自参考书:

    标识符以大写或小写字母 A 到 Z 开头, 下划线 (_),非组合的字母数字 Unicode 字符 基础多语言平面,或基础之外的字符 不在私人使用区域的多语言飞机。第一次之后 还允许使用字符、数字和组合 Unicode 字符。

    词法结构部分实际上列出了第一个字符和其他字符允许的所有 Unicode 范围。

    原因很明显——编译器必须区分标识符和运算符。在标识符中允许标点符号将使得标识符和运算符之间无法区分。

    【讨论】:

    • 以下段落也具有指导意义,@Sulthan - 考虑添加它吗?
    • @Grimxn 这也是一个有趣的段落,但不是 OP 所要求的。
    • 这不是说明你实际上可以使用任何关键字作为标识符,只要你用反引号转义它?这似乎与他的要求密切相关......
    • @Grimxn 虽然它不允许您使用询问标记作为标识符:)
    • 谢谢,这对我帮助很大! :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-09
    • 2015-02-04
    • 1970-01-01
    • 1970-01-01
    • 2011-10-30
    • 1970-01-01
    • 2013-10-29
    相关资源
    最近更新 更多