Dart基本構文 ~初めてのFlutter+Dart体験記
■基本型
Dartではどんな型もオブジェクト整数型
int i=10;
浮動小数点型
double d=12.3;
文字列型
String s="ABC";
型推論(どんな型でも代入できる)
dynamic j=10;
j='abc';
型推論
var v=7;//int型と推論されて、vはint型になる
//v='abc'; エラー
List型(重複可能配列)
List arr1=[1,2,3];
arr1.add(4); //[1,2,3,4]
arr1.insert(4,5); //添字4に値5を追加[1,2,3,4,5]
arr1[1]=0; //[1,0,3,4,5]
arr1.sort(); //[0,1,3,4,5]
Set型(重複不可配列、値の変更は不可)
Set arr2={'a','b','c'};
arr2.add('d'); //追加
print(arr2); //{a, b, c, d}
print(arr2.elementAt(0));//a
Map型(連想配列みたいなもの)
Map m = {'a': 1, 'b': 'abc'};
print(m); //{a: 1, b: abc}
Map map=Map<String,int>();
map['hoge']=1;
map['fuga']=3;
map['hoge']=2;
print(map); //{hoge: 2, fuga: 3}
定数
final k=1;
//k=2; エラー
const l=1;
//l=2; エラー
■制御
if else文
var i=0;
if(i==0){
i++;
}else if(i==1){
i+=20;
}else{
i+=200;
}
print(i.toString()); //1
for文
int i;
for(i=0;i<3;i++){
print('for: ${i.toString()}');
}
forEach文
List arr1=[1,2,3];
arr1.forEach((val){print('forEach List:'+val.toString());});
Set arr2={1,2,3};
arr2.forEach((val){print('forEach Set:$val');});
Map arr3={'first':1,'second':2};
arr3.addAll({'third':3,'fourth':4});
arr3.forEach((key,val){print('$key=$val');});
while文
var i=0;
while(true){
if(++i>9){
break;
}
}
print('while: '+i.toString()); //10
do while文
var i=0;
do {
i++;
} while (i<3);
print('do while: $i'); //3
switch文
var sw='second';
switch(sw){
case 'first':
print('first');
break;
case 'second':
print('second');
continue FOURTH;//FOURTHラベルに飛ぶ
case 'third':
print('third');
break;
FOURTH:
case 'fourth':
print('fourth');
break;
default:
print('nothing');
}
//second
//fourth
switch文
void errorFunction() {
try {
throw Exception('例外'); //意図的に例外を生成
} on Exception catch(e) {
print('関数内 --'+e.toString());
//try-catch-finallyブロックの外に例外を投げなおす
rethrow;
} finally {
//例外が発生してもしなくても必ず実行
print('finallyが実行');
}
}
try{
errorFunction();
}catch(e,s){
// 型を指定しないcatchは、例外全部をキャッチする
// catchに仮引数を2つ指定すると、2つ目はStackTraceオブジェクトが入る
//print(e.toString() + '\x0a' + s.toString());
print('関数外 --'+e.toString());
}
//関数内 --Exception: 例外
//finallyが実行
//関数外 --Exception: 例外
「 初めてのFlutter+Dart体験記(Android,iOSアプリ作成)」に戻る
var v=7;//int型と推論されて、vはint型になる
//v='abc'; エラー
List arr1=[1,2,3];
arr1.add(4); //[1,2,3,4]
arr1.insert(4,5); //添字4に値5を追加[1,2,3,4,5]
arr1[1]=0; //[1,0,3,4,5]
arr1.sort(); //[0,1,3,4,5]
Set arr2={'a','b','c'};
arr2.add('d'); //追加
print(arr2); //{a, b, c, d}
print(arr2.elementAt(0));//a
Map m = {'a': 1, 'b': 'abc'};
print(m); //{a: 1, b: abc}
Map map=Map<String,int>();
map['hoge']=1;
map['fuga']=3;
map['hoge']=2;
print(map); //{hoge: 2, fuga: 3}
final k=1;
//k=2; エラー
const l=1;
//l=2; エラー
var i=0;
if(i==0){
i++;
}else if(i==1){
i+=20;
}else{
i+=200;
}
print(i.toString()); //1
int i;
for(i=0;i<3;i++){
print('for: ${i.toString()}');
}
List arr1=[1,2,3];
arr1.forEach((val){print('forEach List:'+val.toString());});
Set arr2={1,2,3};
arr2.forEach((val){print('forEach Set:$val');});
Map arr3={'first':1,'second':2};
arr3.addAll({'third':3,'fourth':4});
arr3.forEach((key,val){print('$key=$val');});
var i=0;
while(true){
if(++i>9){
break;
}
}
print('while: '+i.toString()); //10
var i=0;
do {
i++;
} while (i<3);
print('do while: $i'); //3
var sw='second';
switch(sw){
case 'first':
print('first');
break;
case 'second':
print('second');
continue FOURTH;//FOURTHラベルに飛ぶ
case 'third':
print('third');
break;
FOURTH:
case 'fourth':
print('fourth');
break;
default:
print('nothing');
}
//second
//fourth
void errorFunction() {
try {
throw Exception('例外'); //意図的に例外を生成
} on Exception catch(e) {
print('関数内 --'+e.toString());
//try-catch-finallyブロックの外に例外を投げなおす
rethrow;
} finally {
//例外が発生してもしなくても必ず実行
print('finallyが実行');
}
}
try{
errorFunction();
}catch(e,s){
// 型を指定しないcatchは、例外全部をキャッチする
// catchに仮引数を2つ指定すると、2つ目はStackTraceオブジェクトが入る
//print(e.toString() + '\x0a' + s.toString());
print('関数外 --'+e.toString());
}
//関数内 --Exception: 例外
//finallyが実行
//関数外 --Exception: 例外