美文网首页
[译] Groovy 语法之标识符(3)

[译] Groovy 语法之标识符(3)

作者: 翼徳 | 来源:发表于2018-11-12 18:45 被阅读2次

    原文地址:http://groovy-lang.org/syntax.html

    3. 标识符

    3.1. 普通标识符

    标识符以字母、$ 或下划线开头,不能以数字开头。字符必须在以下范围之内:

    • 'a' ~ 'z'(小写 ascii 字符)
    • 'A' ~ 'Z'(大写 ascii 字符)
    • '\u00C0' ~ '\u00D6'
    • '\u00D8' ~ '\u00F6'
    • '\u00F8' ~ '\u00FF'
    • '\u0100' ~ '\uFFFE'

    后续字符可以是字母或数字。
    这是一些有效的标识符示例(这些是变量名):

    def name
    def item3
    def with_underscore
    def $dollarStart
    

    以下是无效的标识符:

    def 3tier
    def a+b
    def a#b
    

    点号后的所有关键字也都是有效的标识符:

    foo.as
    foo.assert
    foo.break
    foo.case
    foo.catch
    

    3.2. 带引号的标识符

    带引号的标识符出现在虚线表达式的点后面。 例如,person.name 表达式的 name 部分可以用 person."name"person.'name'。 当某些标识符包含 Java语言规范禁止但在引用时 Groovy 允许的非法字符时,这一点尤其有趣。 例如,短划线、空格、感叹号等字符。

    def map = [:]
    
    map."an identifier with a space and double quotes" = "ALLOWED"
    map.'with-dash-signs-and-single-quotes' = "ALLOWED"
    
    assert map."an identifier with a space and double quotes" == "ALLOWED"
    assert map.'with-dash-signs-and-single-quotes' == "ALLOWED"
    

    正如我们将在下面的字符串部分中看到的,Groovy 提供了不同的字符串文字。点后实际允许所有类型的字符串:

    map.'single quote'
    map."double quote"
    map.'''triple single quote'''
    map."""triple double quote"""
    map./slashy string/
    map.$/dollar slashy string/$
    

    普通字符串和 Groovy 的 GStrings(插值字符串)之间存在差异,因为在后一种情况下,插值将插入到最终字符串中以评估整个标识符:

    def firstname = "Homer"
    map."Simpson-${firstname}" = "Homer Simpson"
    
    assert map.'Simpson-Homer' == "Homer Simpson"
    

    相关文章

      网友评论

          本文标题:[译] Groovy 语法之标识符(3)

          本文链接:https://www.haomeiwen.com/subject/cyncfqtx.html