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/flutter で可変長引数を実現する

Last updated at Posted at 2025-04-17

dart で可変長引数を実現するためのパッケージ(dynamic_function)を作成しました。

とりあえず、デモ用のソースを提示しておきます(dart-sdk-3.7.2 と dart-sdk-3.9.0-14.0.dev で動作を確認しました。また flutter web, flutter windows desktop でも動作しました(flutter-sdk-3.29.3))。

pubspec..yaml
name: qiita
description: A sample command-line application
version: 0.0.1
publish_to: none

environment:
  sdk: ^3.7.2

dependencies:
  dynamic_function: ^1.0.4

dev_dependencies:
func_demo.dart
import 'package:dynamic_function/dynamic_function.dart';

final dynamic sum = DynamicFunction((
  List<dynamic> positional,
  Map<Symbol, dynamic> named
) {
  print('positional.length=${positional.length}');
  int result = 0;
  for (int i = 0; i < positional.length; i++) {
    result += positional[i] as int;
  }
  return result;
});

void main() {
  int answer = sum(11, 22, 33);
  print('answer=$answer');
}

/*
【実行結果】
positional.length=3
answer=66
 */
class_demo.dart
import 'package:dynamic_function/dynamic_function.dart';

class MyNumber {
  final int _num;

  MyNumber(this._num);

  late final dynamic addNumbers = DynamicFunction((
    List<dynamic> positional,
    Map<Symbol, dynamic> named
  ) {
    print('positional.length=${positional.length}');
    int result = _num;
    for (int i = 0; i < positional.length; i++) {
      result += positional[i] as int;
    }
    return result;
  });
}

void main() {
  final myNum = MyNumber(11);
  int answer = myNum.addNumbers(22, 33);
  print('answer=$answer');
}

/*
【実行結果】
positional.length=2
answer=66
 */
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?