10

この関数は、指定された関数transformを使用してリストの各要素を変換する必要があります。

void _doSomething(List<Something> numbers, [transform(Something element)]) {...}

が何もしないときにこのメソッドをスキップしたくないので、次のようなメソッドtransformにデフォルト値を指定したいと思います。transform

void _doSomething(List<Something> numbers, 
                  [transform(Something element) = (v) => v]) {...}

残念ながら、編集者は私に言います

期待される定数期待される

いくつかの回避策がありますか、または単に不可能ですか(またはこのように行うべきではありません)?

4

2 に答える 2

5

デフォルトの関数をプライベートメソッドとして定義できます:

_defaultTransform(Something v) => v;
void _doSomething(List<Something> numbers, 
                  [transform(Something element) = _defaultTransform]) {...}

または、次のような引数を確認してください。

void _doSomething(List<Something> numbers, [transform(Something element)]) {
  if (!?transform) transform = (v) => v;
  ...
}

またはLadicekが提案するように:

void _doSomething(List<Something> numbers, [transform(Something element)]) {
 transform ??= (v) => v;
  ...
}
于 2013-03-11T09:34:42.857 に答える