Dartツアー(3)演算子

技術,プログラミング言語

Flutterを始めてみましたが、コードはDart言語で書きます。という訳で、Dart言語のツアーを見て勉強しながら、自分用にメモをまとめてみました。今回は演算子です。

前回分は以下から。

演算子

  • Dartの演算子の多くはクラスのメンバとして実装できる。
  • 演算子を使用すると式を作成する。
  • 演算指標の上にあるものほど優先度が高い。
  • 2つのオペランドを取る演算子では左側のオペランドで使用されるメソッドが決定する。
種類演算子
単項接尾辞式++ 式– () [] ?[] . ?.
単項接頭辞-式 !式 ~式 ++式 –式 await 式
乗除算演算子* / % ~/
加減算演算子+ –
シフト演算子<< >> >>>
ビット演算子(論理積)&
ビット演算子(排他的論理和)^
ビット演算子(論理和)|
関係演算子、型テスト演算子>= > <= < as is is!
等号演算子== !=
論理演算子(論理積)&&
論理演算子(論理和)||
nullチェック演算子??
条件式(三項演算子)式1 ? 式2 : 式3
カスケード.. ?..
代入演算子= *= /= += -= &= ^= 等
演算子表

算術演算子

算術演算子と前置、後置のインクリメント演算子がある。

演算子意味備考
+加算2 + 3 == 5
減算2 – 3 == -1
-式単項マイナス(否定)
*乗算2 * 3 == 6
/除算5 / 2 == 2.5
~/除算(整数値を返す)5 ~/ 2 == 2
%剰余5 % 2 == 1
算術演算子
演算子意味備考
++変数変数を+1式の値も変数+1
変数++変数を+1式の値は変数のまま
–変数変数を-1式の値も変数-1
変数–変数を-1式の値は変数のまま
インクリメント演算子

等号と関係演算子

演算子意味備考
==一致2 == 2
!=不一致2 != 3
>より大きい3 > 2
<より小さい2 < 3
>=以上3 >= 3
<=以下3 <= 3
関係演算子
  • 2つのオブジェクトが同じものを表しているかどうかを調べるには==演算子を使用する。
    • 全く同じオブジェクトかどうかを調べるにはidentical()関数を使用する。
  • いずれか、または、両方がnullの場合、両方がnullならtureを返し、一方だけならばfalseを返す。
  • x == yは、yを引数としたxの==演算子の結果を返す。

型テスト演算子

  • as,is,is!演算子で実行時に型チェックする
演算子意味
as型キャスト
isオブジェクトの型が指定されたものならばtrueを返す
is!オブジェクトの型が指定されたものでなければtrueを返す
型テスト演算子
  • 「obj is T」の結果は、objがTで記述されたインタフェースが実装されていればtrueを返す。
    • 「obj is Object?」は常にtrueになる。
    • 「obj is Object」は、obj がnullの場合はfalseになる。それ以外はtrueになる。
  • オブジェクトがその型であることが確実な場合のみ、as演算子でオブジェクトをキャストできる。
    • 型が確実でない場合は、is演算子で確認する。

代入演算子

  • =演算子で代入できる。??=演算子は代入先がnullの場合のみ代入できる。

論理演算子

  • 論理演算子で論理式の反転や結合ができる。

ビット演算士とシフト演算子

演算子意味備考(value = 0x22; bitmask = 0x0f;)
&論理積value & bitmask == 0x02, value & ~bitmask == 0x20
|論理和value | bitmask == 0x2f
^排他的論理和value ^ bitmask == 0x2d
~式単項のビット単位の補数
<<左シフトvalue << 4 == 0x220
>>右シフトvalue >> 4 == 0x02, -value >> 4 == -0x03
>>>符号なし右シフトvalue >>> 4 = 0x02, -value >>> 4 == 0
ビット演算子、シフト演算子

条件式

演算子意味備考
条件式 ? 式1 : 式2条件式がtureなら式 1、falseなら式2を返す
式 1 ?? 式2式 1がnullなら式2を返す式 1 != null ? 式 1 : 式2と同じ
条件式

カスケード記法(..)

  • カスケード記法を使用すると、同じオブジェクトに対して一連の操作を行うことができる。
  • 関数呼び出しもフィールドへのアクセスも可能である。
  • 一時的な変数を作成する必要がなくなる
  • オブジェクトがnullである可能性がある場合、最初のカスケードを"?.."にすると、nullの場合は実行されない。

他の演算子については他の言語でも同様なので、あまり他では見ないカスケード記法についてサンプルを書いてみました。あまり実用的な意味がないサンプルです。

その他の演算子

演算子名前意味
()関数関数呼び出し
[]添字アクセスオーバーライド可能な[]演算子の呼び出し
?[]条件付き添字アクセス添字アクセスだが、左辺がnullでも良い。nullの場合は式自体がnullになる。
.メンバアクセス式のプロパティを参照する。
?.条件付きメンバアクセスメンバアクセスだが、左辺がnullでも良い。nullの場合は式自体がnullになる。
その他の演算子

次回

次回は制御文と例外処理です。

2022-03-15技術Dart,プログラミング言語

Posted by woinary