Groovy で改行のエスケープ

Rosetta Code で発見したソースから

def queensUniqueSolutions = { start ->
    assert start instanceof Number || start instanceof List
    def qus = (start instanceof Number) \
                ? queensDistinctSolutions(start) \
                : [] + start
    for (def i = 0; i < qus.size()-1; i++) {
        Rotations.eliminateDups(qus[i], qus[(i+1)..<(qus.size())])
    }
    qus
}

改行を行末のバックスペースでエスケープしている。

Groovy では文末のセミコロンは不要なので演算子の次で改行していたのだけど、これを使えばきりのいいところで改行することもできる。
Java からコピーして試したいが演算子から始まる場合や groovysh で連結したい場合に使えるかもしれない。


Groovy の改行の推論を調べたが見つけられなかった。
Ruby1.9 と同じなのではと予想して『プログラミング言語 Ruby』から改行の判定をメモしておく。

  • セミコロンが文末で明示されていない場合、Ruby インタープリタは、文がどこで終わるかを自分で判定しなければならない
    • 行の中の Ruby コードが構文的に完全な文になっていれば、改行を終端として扱う
  • 改行はバックスラッシュでエスケープすることができる
  • Ruby1.9
    • 行の最初に表れた空白以外の文字がピリオドなら、その行は前の行からの継続行と見なされ、前の行の改行は文の終端にはならない