Skrip Groovy menimbulkan kesalahan:
def a = "test"
+ "test"
+ "test"
Kesalahan:
No signature of method: java.lang.String.positive() is
applicable for argument types: () values: []
Meskipun skrip ini berfungsi dengan baik:
def a = new String(
"test"
+ "test"
+ "test"
)
Mengapa?
def a = b + + "/" + c
. Dalam hal ini, dua simbol + jelas merupakan masalahnya.Jawaban:
Karena groovy tidak memiliki penanda EOL (seperti
;
), akan membingungkan jika Anda meletakkan operator di baris berikutIni akan bekerja sebagai gantinya:
seperti yang diketahui pengurai Groovy untuk mengharapkan sesuatu di baris berikut
Groovy melihat dokumen asli Anda
def
sebagai tiga pernyataan terpisah. The wakilnya pertamatest
untuka
, kedua dua mencoba untuk membuat"test"
positif (dan ini adalah di mana ia gagal)Dengan
new String
metode konstruktor, pengurai Groovy masih dalam konstruktor (karena kurung kurawal belum ditutup), sehingga secara logis dapat menggabungkan tiga baris menjadi satu pernyataanUntuk String multi-baris yang sebenarnya, Anda juga dapat menggunakan kutipan tiga:
Akan membuat String dengan tes pada tiga baris
Selain itu, Anda bisa membuatnya lebih rapi dengan:
yang
stripMargin
metode akan memangkas kiri (sampai dengan dan termasuk|
char) dari setiap barissumber
stripMargin()
.|
karakter di baris tambahan"""
stringstripIndent()
berfungsi.Mirip dengan
stripMargin()
, Anda juga bisa menggunakan stripIndent () sepertiKarena
Anda juga perlu mengindentasi "test" pertama dan tidak langsung meletakkannya setelah inital
"""
(\
memastikan string multi-baris tidak dimulai dengan baris baru).sumber
Anda dapat memberi tahu Groovy bahwa pernyataan tersebut harus mengevaluasi setelah baris berakhir dengan menambahkan sepasang tanda kurung
( ... )
Opsi kedua adalah menggunakan garis miring terbalik
\
,, di akhir setiap baris:FWIW, ini identik dengan cara kerja pernyataan multi-baris Python.
sumber