0
でfalseですか?実際にはGString.equals()
メソッドの実装をチェックした後、それはうまく動作しません。
public boolean equals(Object that) {
if (that instanceof GString) {
return equals((GString) that);
}
return false;
}
疑問が残っている、それが動作を要求される、それはこの場合には、設計によってtrue
を返すべきではないのですか?それはのような、非常に予期しない動作に遭遇するのは簡単だ場所でfalse
で
:
"${'1'}" in ['1', '2', '3']
...はfalseを返すために起こっています。
現在の動作は、equalsおよびhashCode整合性契約の結果であるか、より正確な結果を返すように改善できますか?
だから、 "$ { - > val}" 'はどうなりますか? 'val'は後でバインドされます。しかしバインドされるまでは、Groovy StringのString表現は例外をスローします。 –
基本的に、Groovyの文字列は文字列ではありません。 –
また、http://docs.groovy-lang.org/latest/html/documentation/index.html#_gstring_and_string_hashcodes –