Dartの書き方(自分のメモ用)
前提
まずFlutterでは激しいfpsなどではなく
文字列を表示したり,複雑な画面遷移などを専門に扱う
これはiOSとAndroidをひとつの言語で書けてしまう利点があり,現在人気の開発プラットフォームである.
その際にdartというC++やJavaによく似た言語を使う.
このページではdart言語の基本を実際のコードを通して記録する.
dartの基本
ここでは私の手元の環境dart2.18.4での動作を記録する.
以下のm.dartファイルを作成して
ターミナルから
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);
}
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する.
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を付けた.
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の扱いも記録した.
※自分用メモですが,間違い等あればコメントで教えていただけるとありがたいです.