groovy
Ciągi i literały GString
Szukaj…
Składnia
- „Ciąg pojedynczego cudzysłowu”
- „Ciąg podwójny”
- 'Sznurek wielowierszowy'
- „” „Potrójny podwójny ciąg„ ”„
- / Slashy string /
- $ / Dolar ukośnik / $
Uwagi
Groovy ma dwa typy ciągów: java java.lang.String
i groovy.lang.GString
, a także wiele form literałów łańcuchowych (patrz składnia i przykłady).
Główną różnicą między tymi dwoma typami łańcuchów jest to, że GString obsługuje interpolację łańcuchów.
Ciąg pojedynczego cudzysłowu
def str = 'Single quoted string'
assert str instanceof String
Ciąg podwójny (bez symbolu zastępczego interpolacji)
def str = "Double quoted string"
assert str instanceof String
Ciąg podwójny (interpolacja)
def param = 'string'
def str = "Double quoted ${param}"
assert str instanceof GString
assert str == 'Double quoted string'
Parametr jest domyślnie rozstrzygany z niecierpliwością, co oznacza, że dotyczy to:
def param = 'string'
def str = "Double quoted ${param}"
param = 'another string'
assert str == 'Double quoted string'
Aby leniwie ładować parametr za każdym razem, gdy używany jest ciąg, można to zrobić:
def param = 'string'
def str = "Double quoted ${ -> param}"
assert str == 'Double quoted string'
param = 'lazy load'
assert str == 'Double quoted lazy load'
Ciąg wielowierszowy
def str = '''multiline
string'''
assert str instanceof String
Ciąg wielowierszowy (dodatkowy znak nowej linii)
def str = '''
multiline
string'''
assert str.readLines().size() == 3
Ciąg wielowierszowy (bez dodatkowych końcowych znaków nowej linii)
def str = '''\
multiline
string'''
assert str.readLines().size() == 2
Potrójny podwójny ciąg znaków
def param = 'string'
def str = """
multiline
$param
"""
assert str instanceof GString
assert str.readLines().size() == 3
assert str == '''
multiline
string
'''
Slashy string (bez symbolu zastępczego interpolacji)
def str = /
multiline string
no need to escape slash
\n
/
assert str instanceof String
assert str.readLines().size() == 4
assert str.contains('\\n')
Slashy string (interpolacja)
def param = 'string'
def str = /
multiline $param
no need to escape slash
\n
/
assert str instanceof GString
assert str.readLines().size() == 4
assert str.contains('\\n')
assert str.contains('string')
Dolarowy ukośny ciąg
def param = 'string'
def str = $/
multiline $param
no need to escape slash
\n
$
$$
/$
assert str instanceof GString
assert str.readLines().size() == 6
assert str.contains('\\n')
assert str.contains('$')
Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow