1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

dart言語に慣れよう

Posted at

Dartの書き方(自分のメモ用)

前提

まずFlutterでは激しいfpsなどではなく
文字列を表示したり,複雑な画面遷移などを専門に扱う

これはiOSとAndroidをひとつの言語で書けてしまう利点があり,現在人気の開発プラットフォームである.
その際にdartというC++やJavaによく似た言語を使う.

このページではdart言語の基本を実際のコードを通して記録する.

dartの基本

ここでは私の手元の環境dart2.18.4での動作を記録する.

以下のm.dartファイルを作成して
ターミナルから

dart m.dart

で動く.

m.dart
import 'dart:math';

void main() {
  print("Hello world! OHAYO!!!!!!!!!!!!");// コンソールに出力

  // if文
  int value=4;
  if(value==3){
    print('3desu');
  }
  else if(value==4){
    print('4desu');
  }

  // for文
  for (int i=0; i<=2; i++){
      print(i);// 0~2を出力
  }
  
  // 配列
  List<int> A=[10,11,12,13];
  print(A[3]);// 13  0-index
  for(int i=0; i<=3; i++){
    print(A[i]);
  }
  /* 複数行コメントはこうする
  for(int a in A){// このpythonっぽい書き方でも大丈夫
    print(a);
  }  
  */

  // Map 連想配列
  var M = Map();
  M['a']=20;
  M['b']=21;
  M['c']=22;
  print(M['a']);// 20
  print(M['b']);// 21
  print(M['c']);// 22
  
  // 実数を扱う
  double a=0.4*pi;// mathライブラリのpiや sin() cos() e が使える 
  print(cos(a));

  // 乱数を扱う
  var random = Random();
  random.nextDouble(); // 0.0と1.0の範囲: [0, 1)
  random.nextInt(10); // 0と9の範囲
  
  // 文字列
  String s0 = "あいうえお"; 
  print(s0);
  
}

m.dartの出力
Hello world! OHAYO!!!!!!!!!!!!
4desu
0
1
2
3
13
10
11
12
13
20
21
22
0.30901699437494745
あいうえお

行末に";"を忘れずにつける
if文やfor文,配列,連想配列,実数,乱数,文字列,について扱った.

dartでclassを使う

以下のコードで簡単なclassの扱いを見る.
Hitoクラスを作成する.
このインスタンスは名前と年齢をもち,birth_day()という関数で自身の年齢を+1する.

m1.dart
class Hito {
  var name;// varなら型がなんでもいける
  var age;// これらは基本public変数 (普通にアクセスできる)
  var _age=10000053;// _で始まる変数はprivate変数(getterなどを定義しないと普通にはアクセスできない)

  Hito(this.name,this.age);// コンストラクタ インスタンス生成時に名前と年齢を設定する
   
  void birth_day(){
    this.age+=1;
  }
}

void main() {
  final tarou=Hito('tarou',113);
  tarou.birth_day();

  print(tarou.name);
  print(tarou.age);
  print(tarou._age);// private変数なのでアクセスできない...はずだった
  // dartではprivate変数が定義されたファイル内では普通にアクセスできる

}

tarou
114
10000053

注意点として
基本的にpublic変数(他から自由にアクセスできる)
だが,_を先頭につけた変数はprivate変数(他からはアクセスできない)
しかしdart言語ではprivate変数でも同じファイルからならアクセスはできる.

ここではひとつのファイルで実行しているので実質全部public変数になっている.

以下では一応真面目にsetter,getterを付けた.

m2.dart
class Hito {
  var _age;
  String _name;

  Hito(this._age, this._name);
  
  void birth_day(){
    this._age+=1;
  }

  // setter
  set name(String s) {
    this._name = s;
  }
  set age(int a) {
    this._age = a;
  }

  // Getter
  int get age => _age;
  String get name => _name;
}

void main() {
  final taro = Hito(113, 'taro');

  taro.name='taro2';
  taro.age=13;
  
  taro.birth_day();
  print(taro.age.toString() + 'sai  name:' + taro.name);

}

14sai  name:taro2

ここでは_name,_ageが外部からすぐにはアクセスできないようにしてある.(カプセル化)
なのでsetterで値を決めて,getterで外部からアクセスできるようにする.
この際setterで値を制限する(年齢の負の値の入力を防ぐなど)こともできる.

これは複数ファイルを管理する大きなプログラムになれば威力を発揮するはずだ.

まとめ

dart言語での基本構文(簡単なとこだけ)を扱い,classの扱いも記録した.

※自分用メモですが,間違い等あればコメントで教えていただけるとありがたいです.

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?