ねえすべて、このラムダまたは何それが実際にを呼び出す方法についての簡単な質問..C#のラムダreturn文の質問
public Composite CreateBuffCheckAndCast(string name, UnitSelectDelegate onUnit, CanRunDecoratorDelegate extra)
{
return new Decorator(
ret => Spells.CanBuff(name, onUnit(ret)) && extra(ret),
new Action(ret => Spells.Buff(name, onUnit(ret))));
}
は、残念ながら、このクラスの残りの部分を持っていないとでラムダを使用していませんしばらくの間、 "ret"変数はどこから来ますか?呼び出し関数は? IEnumerableを取得するために使用されていますか?onUnitが受け入れる型をコンパイラに割り当てることができます。
ソリューション:
RET =は>デコレーターによって受け入れられるようにデリゲート型にSpells.CanBuffを変換するために使用されます。 onUnitはデリゲート関数のパラメータも受け入れます。
「これは上記の機能に適用されるのですか、ラムダは別の方法で使用されていますか? –
CreateBuffCheckAndCastを呼び出し、ret lambda変数を設定する正しい方法を教えてくれますか? – BruceBannor
ret/parameter /に値を設定しません。 CreateBuffCheckAndCastから返されているラムダ式はありません。コンポジット(デコレータになります)だけです。ですから、あなたが使用しているライブラリ用のものであれ、Compositeが行うことができることだけができます。 –