0

適切に機能するクロージャーを定義するこのグルーヴィーなスクリプトがあります。

escape = { str -> 
    str.collect{ ch ->
        def escaped = ch
        switch (ch) {
            case "\"" : escaped = "\\\"" ; break
            // other cases omitted for simplicity
        }
        escaped
    }.join()
}

assert escape("\"") == "\\\""       //Sucess

しかし、スクリプトに GString 補間を使用する別のクロージャーを追加すると。

escape = { str -> 
    //Same as above
}

dummy = {
    aStr = "abc"
    "123${aStr}456"
}

//Compilation fails

エラーが発生します

javax.script.ScriptException: org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
Script650.groovy: 7: expecting anything but ''\n''; got it anyway @ line 7, column 39.
        case "\"" : escaped = "\\"" ; break
                                 ^

1 error

追加された閉鎖がコメントされていたとしても。

escape = { str -> 
    //Same as above
}

/*dummy = {
    aStr = "abc"
    "123${aStr}456"
}*/

//Compilation fails

それでも失敗します!何を与える?

4

0 に答える 0