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

Dart復習メモ。主にListについて(初学者用)

Posted at

Dart復習した覚え書き。
参考:
https://zenn.dev/joo_hashi/books/34fa9e03ab3440/viewer/ada115

関数

複数の値を返す場合

//返り値に二つの型を指定する。
(int, String) getMember(int number, String name) {
  return (number, name);
}

void main() {
  final gm = getMember(1, 'Taro');
  print(gm);// (1, Taro)
}

無名関数

void main() {
  final list = [1, 2, 3, 4, 5];
  //listの中にある要素itemを引数として受け取り表示
  list.forEach((item) {
    print(item);
  });
}

こっちでもいい

void main() {
  final list = [1, 2, 3, 4, 5];
  list.forEach((item) => print(item));
}

List

void main() {
  //listが格納する値の型を<>の中に指定
  List<String> list = ['Hoge', 'Fuga', 'Foo'];
  // 2番目の要素を出力
  print(list[1]);// Fuga
}

Listに要素を追加していく

void main() {
  List<String> list = ['Hoge', 'Fuga', 'Foo'];
  list.add('Bar');
  print(list);//[Hoge, Fuga, Foo, Bar]
}

Listから要素を削除

void main() {
  List<String> list = ['Hoge', 'Fuga', 'Foo'];
  list.add('Bar');
  print(list);//[Hoge, Fuga, Foo, Bar]
}

Listの要素のindexを取る

void main() {
  List<String> list = ['Hoge', 'Fuga', 'Foo', 'Bar', 'Baz'];
  print(list.indexOf('Hoge')); // 0
  print(list.indexOf('Fuga')); // 1
  print(list.indexOf('Foo')); // 2
}

Listの要素を並び替える

void main() {
  // Listの要素を並び替える。どういう基準で並び替えられているのはようわからん。
  var names = ['山田', '佐藤', '鈴木'];
  names.sort();
  print(names); // [佐藤, 山田, 鈴木]  
  // Listの要素を並び替える。並び替える基準を指定する
  var ages = [30, 40, 20];
  ages.sort((a, b) => 『a.compareTo(b));
  print(ages); // [20, 30, 40]
}

数字のsortの挙動をわかりやすくしてみるとこんな感じ。比較して、-1だった場合、入れ替えは発生しない。1だった場合は入れ替えが発生する。入れ替えが発生したら、入れ替えが発生した値でまだ比較されていない値同士を比較という感じだろうか。この辺はアルゴリズムに詳しい人の知見を求む。

void main() {
  var ages = [30, 40, 20];
  ages.sort((a, b)  {
    var result = a.compareTo(b);
    print(a);
    print(b);
    print(result);
    return result;
  });
  print(ages); 
  /*
    30
    40
    -1
    40
    20
    1
    30
    20
    1
    [20, 30, 40]
    
  */
}

条件に一致する要素を抽出

void main() {
  // whereメソッドで条件に一致する要素を抽出する
  var ages = [20, 30, 40, 50, 60];
  var filteredAges = ages.where((age) => age > 30);
  print(filteredAges); // (40, 50, 60)
}

要素をシャッフルシャッフルぅ!

void main() {
  List<String> list = ['Hoge', 'Fuga', 'Foo', 'Bar', 'Baz'];
  list.shuffle();
  print(list);//毎回並びが違くなる
}

foreachで回して各要素になんらかの処理を施す

void main() {
  List<String> list = ['Hoge', 'Fuga', 'Foo', 'Bar', 'Baz'];
  list.forEach((element) {
    print(element.toUpperCase()); //大文字で表示
  });
  
}

配列の要素を全て評価

void main() {
  List<String> list = ['Hoge', 'Fuga', 'Foo', 'Bar', 'Baz'];
  // 文字数が全部3以上だったらtrue、そうでなければfalse
  print(list.every((element) => element.length > 3));// false
}
void main() {
  List<String> list = ['Hoge', 'Fuga', 'Foo', 'Bar', 'Baz'];
  // 文字数が全部2以上だったらtrue、そうでなければfalse
  print(list.every((element) => element.length > 2));// true
}

map

void main() {
  List<String> list = ['Hoge', 'Fuga', 'Foo', 'Bar', 'Baz'];
  // 全部大文字にする
  final m = list.map((e) => e.toUpperCase());
  print(m);// (HOGE, FUGA, FOO, BAR, BAZ)
}

reduce

void main() {
  final numbers = <double>[10, 2, 5, 0.5];
  //全部足して要素を結合していき、一つにする。
  final result = numbers.reduce((value, element) => value + element);
  print(result); // 17.5
}
0
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
0
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?