2013-03-11 44 views
1

這個功能應該變換列表中的每個元素與給定函數變換:如何指定函數參數的默認值?

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

因爲我不想跳過此方法時transform不應該做任何事情,我想給一個默認值該transform方法是這樣的:

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

不幸的是,編輯告訴我

預期不變預期的

有一些解決方法或根本不可能(或者不應該這樣做)?

回答

1

您可以定義默認功能爲私有方法:

_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)]) { 
    if (transform == null) transform = (v) => v; 
    ... 
} 
+0

這是一個很大的爭論對'檢查'操作員 - 你在最簡單​​的情況下可能會出錯。我寧願主張使用if(transform == null)transform =(v)=> v'。 – Ladicek 2013-03-11 09:48:19

+0

哎呀,我忘了'!'!謝謝 ! – 2013-03-11 10:11:55