ダーツの文字列を比較する最良の方法は何ですか? Stringクラスにはequals
メソッドが含まれていません。 ==
はお勧めですか?例えばダーツ文字列比較器
:
String rubi = 'good';
String ore = 'good';
rubi == ore;
ダーツの文字列を比較する最良の方法は何ですか? Stringクラスにはequals
メソッドが含まれていません。 ==
はお勧めですか?例えばダーツ文字列比較器
:
String rubi = 'good';
String ore = 'good';
rubi == ore;
はい、==
は、2つの文字列が等しいかどうかをテストするための方法である(排他的に文字の同じ配列を含みます)。コードの最後の行はtrue
と評価されます。
文字列は不変オブジェクトです。つまり、作成することはできますが、変更することはできません。もちろん、他の文字列から新しい文字列を作成することはできますが、作成した文字列の内容は固定されています。
同じ順序で同じ文字を持つ2つの文字列が同じオブジェクトになる可能性があるため、これは最適化です。
String rubi = 'good';
String ore = 'good';
print(rubi == ore); // true, contain the same characters
print(identical(rubi, ore)); // true, are the same object in memory
異なりジャワ、Dartは、==
として演算子をオーバーライドすることを可能にします。したがって、この演算子が等価性をチェックするための独自のテストを定義することができます。 indentical functionを使用して、2つの参照が同じオブジェクト(のオブジェクトの==
相当、Java)にあるかどうかを確認することもできます。
Stringについては、少し特殊です。あなたがidentical
リターンを見ることができるようにtrue
のみ最初のケースと常に==
true
ため
main() {
final s = "test";
printTests(s, "test");
// displays '==' => true 'identical' => true
printTests(s, "$s");
// displays '==' => true 'identical' => false
printTests(s, new String.fromCharCodes(s.codeUnits));
// displays '==' => true 'identical' => false
}
printTests(String s1, String s2) {
print("'==' => ${s1 == s2} 'identical' => ${identical(s1, s2)}");
}
:あなたがインスタンス化する方法に応じてStringあなたはDartVMと異なる結果を持つことができます。しかし、それは常に真実ではありません。 dart2jsコンパイル後にこのコードをjavascriptで実行すると、identical
と==
は常にtrue
を返します。
ほとんどの場合、==
を使用する必要があるため、Stringの値を比較する必要はありません。
'==='は組み込み関数 'identical()'に置き換えられました。 –
ありがとうございます。私は答えを更新する。 – SoftwareCarpenter