|

Dartの勉強1−3:配列(lists)と高階関数(methods)

匿名関数の前に配列と高階関数を確認した方がいいというChatGPT先生の助言に基づいています。

  • 配列(lists:In Dart, arrays are List objects, so most people just call them lists.)
    複数の値を格納できる変数ということでいいと思います。

    1. 配列作成(同じデータ型にするのが基本)
         var numbers = [1, 2, 3];
         var colors = ['white','black','pink', 'cyan'];
         List<bool> answers = [true, false];
      
    2. 配列の操作例
      void main() {
        var fruits = <String>[];
        fruits.add('apples');
        print(fruits); //[apples]
        fruits.addAll(['grapes', 'bananas', 'oranges']);
        print(fruits); //[apples, grapes, bananas, oranges]
        var len = fruits.length; //配列の要素数
        print(len); //4
        var appleIndex = fruits.indexOf('apples');
        fruits.removeAt(appleIndex);
        print(fruits); //[grapes, bananas, oranges]
        fruits.clear(); //全ての要素を削除
        print(fruits); //[]
      
        var vegetables = List.filled(6, 'broccoli'); //まとめて作成
        print(vegetables); //[broccoli, broccoli, broccoli, broccoli, broccoli, broccoli]
      }
      
  • 高階関数(methods)
    1. forEach
      void main() {
         var colors = ['white', 'black', 'pink', 'cyan'];
         colors.forEach((color) {
            print(color);
         });
      }
      

      配列colorsから1つずつcolorとして取り出すループ処理となっています。

    2. map
      int doubleValue(int num) {
        return num * 2;
      }
      
      void main() {
        var numbers = [1, 2, 3, 4, 5, 6, 7];
        var doubled = numbers.map(doubleValue).toList();
        print(doubled);
      }
      

      個人的にはかなり理解に苦しんだのですが、まとめて抜き出して、まとめて処理する感じです。最後にtoList()をつけてListに戻すのがお決まりのようです。

    3. sort
      int ascendingOrder(int a, int b) {
        return a - b; // a - b が比較結果
      }
      
      int descendingOrder(int a, int b) {
        return b - a; // b - a が比較結果
      }
      
      void main() {
        var numbers = [5, 2, 8, 1, 3];
        numbers.sort(ascendingOrder); //正の値だとaが大きいと判断してaとbを入れ替え
        print(numbers); // [1, 2, 3, 5, 8]
        numbers.sort(descendingOrder); //正の値だとbが大きいと判断してaとbを入れ替え
        print(numbers); // [8, 5, 3, 2, 1]
      }
      
      

      Stringの場合はcompareToメソッドを使って並べ替えが可能です。

      // 名前付き関数
      int alphabeticalOrder(String a, String b) {
        return a.compareTo(b);
      }
      
      void main() {
        var names = ['Charlie', 'Alice', 'Bob'];
      
        // 名前付き関数を使用してソート
        names.sort(alphabeticalOrder);
      
        print(names); // ['Alice', 'Bob', 'Charlie']
      }
      

類似投稿

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

This site uses Akismet to reduce spam. Learn how your comment data is processed.