2019/12/19 Dart 関数(Functions)パート1

Dartは真のオブジェクト指向言語ですので、関数もオブジェクトであり、関数型(Function type)が用意されています。これは、関数を変数に代入することができ、関数を別の関数の引数として渡すことができる、ということです。Dartクラスのインスタンスを関数のように呼び出すこともできます。

sample1-1(関数定義の例)

  var _nobleGases = {
  2: 'helium',
  10: 'neon',
  18: 'argon',
};
  
  bool someFunc(int para1){
    return _nobleGases[para1] != null;
  }
  
  print(someFunc(2));  //true
  print(someFunc(1));  //false
  print(someFunc(10));  //true
  print(someFunc(3));  //false

sample1-1ではsomeFuncという関数名の関数を定義しています。型注釈として戻り値の型をbool型、引数の型をInt型と指定しています。

引数で指定したkeyに値が存在する場合はtrueを、値がない場合はfalseを返す関数です。

sample1-2

  var _nobleGases = {
  2: 'helium',
  10: 'neon',
  18: 'argon',
};
    someFunc(para1){  //型注釈は省略できる。
    return _nobleGases[para1] != null;
  }
  
  print(someFunc(1));
  print(someFunc(2));
  print(someFunc(3));
  print(someFunc(10));

sample1-2のように戻り値・引数の型注釈は無くても動きます。


関数の本体が一文の場合sample1-3のような簡略記法を使えます。

sample1-3

 var _nobleGases = {
  2: 'helium',
  10: 'neon',
  18: 'argon',
};
  bool someFunc(int para1)=> _nobleGases[para1] != null;  //簡略記法で関数定義
  
  print(someFunc(2));
  print(someFunc(10));
  print(someFunc(18));
  print(someFunc(100));

=> 式

{ return 式;}

の簡略記法です。アロー構文と呼ばれたりします。

アロー(=>)とセミコロン(;)の間には式のみ配置できます。文は配置できません。

ですので、if文は書けませんが、三項演算子(condition ? value1 : value2)は書けます。

 

参考

https://dart.dev/guides/language/language-tour#built-in-types

コメントを残す

メールアドレスが公開されることはありません。