ダート2.7リリースでは、このバージョンでは、拡張メソッドのサポートを追加し、特別なパッケージで文字の文字列を処理するための新しい手順をもたらします。ヌルセキュリティでDartPadも更新されました。
拡張メソッド
ダート2.7は、強力な新しい言語機能を追加します。拡張メソッド(拡張メソッドを)。それはあなたが任意の型(あるいはタイプ制御することはできない)に新しい機能を追加することができ、かつ日常的メソッド呼び出しのシンプルかつ自動補完を持っています。
整数および倍精度を解析文字列から増加した支援:例で見てみましょう。それはダーツであるため、アプリケーション開発者として、我々は、Stringクラスを変更することはできません:コアは、ライブラリで定義されていますが、拡張メソッドによって、我々はそれを拡張することができます。メソッドはStringクラス自体に定義されているかのように、この拡張機能を定義した後、我々は、文字列の上に新しいのparseIntメソッドを呼び出すことができます。
extension ParseNumbers on String {
int parseInt() {
return int.parse(this);
} double parseDouble() {
return double.parse(this);
}
}main() {
int i = '42'.parseInt();
print(i);
}
- 拡張メソッドは静的です
- 拡張機能は、型の変数を持つことができます
- 拡張メソッドは、本質的に延長部材であります
ここでは詳述しない拡張方法についてあまりにも多くの詳細は、詳細を参照更新命令を。
セキュリティサブ文字列処理
UTF-16エンコーディングを使用してダーツ標準Stringクラス。これは、プログラミング言語、デバイスとWebの言語で、機械の操作をサポートする特に人の一般的な選択です。
UTF-16文字の文字列は、一般的に適しています。しかし、文字列を介して、ユーザの入力文字列を扱う場合は特に、ユーザが理解し、UTF-16文字コード部との間の差として符号化されたキャラクタに遭遇することができます。ユーザーが入力した文字列の最初の3つの文字を抽出する例で見てみましょう:
var input = [‘Resume’];
input.forEach((s) => print(s.substring(0, 3)));$ dart main.dart
Res
これまでのところ問題はありません。私たちは入力リスト内の文字列の最初の3つの文字を印刷し、結果はRESです。今、私たちは、文字列でも韓国語(ハングル文字)または「回復」のコンセプトの表現を表すための記号の組み合わせ、さまざまな地域からのユーザー、彼らはアクセント付き文字を含む入力できます考えてみます。
Re'suméのために、なぜ我々は、文字列「2文字」を得るのですか?2個の絵文字については、奇妙なクエスチョンマークは、それがどのようにあるのですか?ここでの問題は、Unicodeにあります。実際、再開アクセント2つのコード・ポイントは、E:Eおよびアクセント記号の組み合わせ。
すでに述べたように、通常、あなたは、文字とコードポイントを心配する必要はありません。あなたは、それは、受信、送信および文字列全体を転送することであるしなければならない場合は、内部コーディングがはっきりと見えます。あなたは、文字列を横断したり、文字列の内容を操作する必要がある場合は、あなたは、問題が発生する場合があります。
ダート2.7は、これらのケースを処理するための新しい文字パケットを紹介します。このパッケージには、Unicodeの字型のクラスタと呼ばれ、ユーザー、によって知覚文字列として文字列をサポートしています。使用キャラクターパッケージは、あなたはいくつかの変更コードのテキストを短くすることで、コードを修正することができます。
// Before:
input.forEach((s) => print(s.substring(0, 3)));// After, using the characters package:
input.forEach((s) => print(s.characters.take(3)));
まず、我々はsの文字列から(簡単に使用.characters拡張メソッドへの)文字の新しいインスタンスを作成します。そして、あなたは最初の3つの文字テイク()メソッドの抽出物を使用することができます。
新バージョンではまた、ヌル安全プレビューをもたらします。
詳細については、以下を参照してください。