2015年10月27日火曜日

Null-aware operators : x?.p

Null-aware operators について一つずつ事例を挙げて紹介していきます。


??」「??=」に続き 3 件目は「x?.p」です。
「x?.p」といった記載をし、オブジェクト x が null でない場合のみプロパティ p を参照するという意味です。




Knight クラスのオブジェクト piece は null なので、そのプロパティである point を参照しようとすると普通は例外が発生してしまいますが、参照の際に「?.」を利用することで例外を回避することができます。


null の参照例外を回避できるというのは絶大で、この記載方法をスタンダードとしていくべきだと思います!
超主観ですが(笑)


次回は「x?.m()」を紹介します。
今回の記事を見ていたら想像できると思いますが、こちらも効果絶大!

2015年10月25日日曜日

Null-aware operators : ??=

Null-aware operators について一つずつ事例を挙げて紹介していきます。


前回の「??」に続き 2 件目は「??=」です。
「A ??= B」といった記載をし、A が null の場合のみ B を実行するという意味です。





上記のとおり、「??=」の左辺が null の場合と、そうでない場合で振る舞いが異なります。
「??」に比べたら、まだ使うシーンはあるかもしれませんが、積極的に利用するかは???です。。。


次回は「x?.p」を紹介します。
次回あたりから使い勝手が良さそうなのが出てきますよ~

Null-aware operators : ??

前回の記事で取り上げた Null-aware operators について一つずつ事例を挙げて紹介していきます。


まず、1 件目は「??」です。
「A ?? B」といった記載をし、A が null でなければ A を、null の場合は B を実行するという意味です。





上記のとおり、変数 a と b が null であるので、 print 関数を実行すると c の文字列が表示されます。
個人的にはあまり利用シーンが浮かばなかったのですが、あればあるで良いといった感じでしょうか。。。


次回は「??=」を紹介します。

2015年10月4日日曜日

Null の扱い(Null-aware operators)

8/31 に Dart 1.12 がリリースされました。
(UP が遅くなってしまいました。。。)


今回のリリースで追加された機能の説明に入る前に次のコードをご覧ください。
var isNull = null;
isNull.toString();


多くの言語では null という概念に悩まされます。
上のコードでは toString() というモジュールを実行しようとしていますが、実行元のオブジェクトが null であるために例外が発生してしまいます。
#いわゆるヌルポ(NullPointerException)ですね


多くのプログラマは、この null を常に意識してコーディングせねばならず、他人の書いたモジュールの返り値に null が含まれるかどうかまで気にしないといけません。


今回の Dart のアップデートでこの null に対するわずらわしさを解消、とまではいきませんが、軽減するような機能が追加されました。
Null-aware operators です。




Dart News & Updates」で紹介されていたコードをそのまま載せましたが、各演算子に「?」を付けることで null の可能性があるオブジェクトの扱いをシンプルにしてくれます。
var isNull = null;
isNull?.toString();


toString() の前に「?」を付けることで、オブジェクトが null の場合でも例外を発生せず、後続へ流れます。
確かに便利だな~と思います。


Null-aware operators にはいろいろな種類がありますので、別の記事でまとめようと思います。


--- 参考もと
http://news.dartlang.org/2015/08/dart-112-released-with-null-aware.html