0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

お題は不問!Qiita Engineer Festa 2024で記事投稿!
Qiita Engineer Festa20242024年7月17日まで開催中!

Dartの定数式で使える演算子一覧と、定数式について

Last updated at Posted at 2024-07-17

定数式で使える演算子一覧

.dart
数値演算子://+は文字結合も含むが、その他の型は不可能;Listも不可能
    +,-, *,/,~/,%,-x
論理演算子:
    !,&&,||
比較演算子:
    <,<=,>,>=,==,!=
ビット演算子:
    |,^,&,~x,<<,>>,>>>
://定数式(定数コンストラクタも)は、Type promotionを起こす
    as,is,is!
三項演算子://ここと、ここより上は定数コンストラクタでも使用可能;
    BooL?a:b
配列・マップアクセス://ここ以下は定数コンストラクタでは使用不可。恐らくコレクション系の操作だから。
    a[b]
コレクションif:
    const Map m={if (i is int) i: 'int'}// ;
スプレット演算子:
    ...,?...// ;

関数呼び出しや、ゲッター・セッターの呼び出しは定数式で行えない。

定数式について

定数式で使える演算子と定数だけを含む式を定数式と言い、定数式はコンパイル時に計算され、その式の位置に計算結果が置かれる。
なので、定数式の内容は実行時のパフォーマンスに影響しない。
私は、パターンが同じ定数式があるなら定数コンストラクタを利用する。
定数式を直接書き込むよりはほんの少し負担が上がるが、記述を関数呼び出しの様に短くでき、実行時に計算するどの方法よりも軽いからです。
それらの例はこちら>>
https://qiita.com/drafts/c4144b5d2f18898e6ac8/edit

コンパイル時定数

コンパイル時に生成され、計算できる定数。
同じ値のコンパイル時定数は同じインスタンスになる。

何か補足したいことが出たら、適宜補足します。

0
1
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
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?