LoginSignup
8
8

More than 5 years have passed since last update.

Dart1.8リリースノート

Posted at

こんにちは、らこです。

昨日Dart1.8のリリースノートが発表されました。リリースノートでは標準ライブラリの改善のみということになっていますが、Dart1,8に同梱されるDartEditorにenumが使える機能が試験的に実装されています。残念ながらasync/awaitはまだ先のようです。それでは以下、個別の解説です。

dart:collectionに関する変更

SplayTreeSetクラスにtoSetメソッドを追加

SplayTreeSetクラスにtoSetメソッドが追加され、自身のクローンを返すようになっています。あまり馴染みのないクラスかと思いますがが、SplayTreeというのはキーを自動的に二分木にバランシングして二分探索できるようにしてあるデータ構造で、具象クラスはSplayTreeSetとSplayTreeMapがあります。用途としてはそこまで数が多くなく頻繁にアクセスするデータ、すなわちキャッシュ等が適しているかと思われます。

dart:convertに関する変更

JsonUTF8Encoderを追加

JsonUtf8Encoderがdart:convertに追加されました。今までUTF-8にエンコードされたJSONを生成するにはまずオブジェクトをJSON文字列にエンコードし、その後文字列をUTF-8のバイト列にエンコードするという2段階の処理が必要でしたが、このクラスはそれをまとめてやってくれます。

dart:coreに関する変更

RangeErrorの変更とIndexErrorの追加

RangeErrorの2つの名前付きコンストラクタRangeError.valueRangeError.rangeに新しくmessageパラメータが追加されました。これですべてのコンストラクタでエラーメッセージを変更できるようになりました。また、RangeError.indexコンストラクタが追加されました。このコンストラクタはfactoryコンストラクタになっており、内部ではこれまた新しいクラスであるIndexErrorが返されるようになっています。IndexErrorはインデックスのあるオブジェクトに対する範囲外アクセスに特化したRangeErrorです。

String.fromCharCodesコンストラクタにstartとend引数を追加

String.fromCharCodesは文字コード列からStringオブジェクトを生成するコンストラクタですが、オプショナル引数として文字コード列の読み取り開始・終了インデックスを指定できるようになりました。

dart:ioに関する変更

HttpClient、HttpServerのTLSプロトコルでALPN extensionをサポート

これは標準APIの拡張ではなく内部実装の改善ですが、SPDYなどのTLSプロトコルの選択機構(?)であるAPLN(Application-Layer Protocol Negotiation)をサポートしたようです。

試験的実装

enum

いよいよDartにもenumが実装されますが、現在はDartEditor上で、Tools > Preferences > Experimental にある “Enable Enums Support” を有効にしないと使えません。enumは次のようなコードが書けるようになります。

enum


以上Dart1.8の主な変更点です。enumによってますますJavaらしさが増したような気がします。正式実装され次第詳しい仕様などはまとめようと思います。

8
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
8