タグ付けされた質問 「lambda」

AWSサービスには使用しないでください(これらの質問には[aws-lambda]を使用してください!)ラムダは、Lisp、C#、C ++、Lua、Python、Ruby、JavaScript、Javaなどのプログラミング言語の匿名関数またはクロージャです。(また、ラムダ式。)


7
2つの式を組み合わせる(Expression <Func <T、bool >>)
タイプの2つの式がExpression&lt;Func&lt;T, bool&gt;&gt;あり、これらのOR、AND、またはNOTを使用して、同じタイプの新しい式を取得したい Expression&lt;Func&lt;T, bool&gt;&gt; expr1; Expression&lt;Func&lt;T, bool&gt;&gt; expr2; ... //how to do this (the code below will obviously not work) Expression&lt;Func&lt;T, bool&gt;&gt; andExpression = expr AND expr2
249 c#  linq  lambda  expression 

6
(ラムダ)関数クロージャは何をキャプチャしますか?
最近、私はPythonをいじり始めましたが、クロージャーが機能する方法に変わったものを見つけました。次のコードを検討してください。 adders=[0,1,2,3] for i in [0,1,2,3]: adders[i]=lambda a: i+a print adders[1](3) これは、単一の入力を受け取り、その入力を数値で追加した関数を返す単純な配列を作成します。関数はforループで構築され、イテレータiはから0まで実行され3ます。これらの数値のそれぞれに対して、lambda関数を作成iして関数の入力に追加する関数が作成されます。最後の行は、パラメーターとして2番目のlambda関数を呼び出し3ます。驚いたことに、出力はでした6。 期待していました4。私の推論は:Pythonではすべてがオブジェクトであり、したがってすべての変数はオブジェクトへのポインターとして不可欠です。のlambdaクロージャーを作成するときにi、が現在ポイントしている整数オブジェクトへのポインターを格納することを期待していましたi。つまりi、新しい整数オブジェクトが割り当てられた場合、以前に作成されたクロージャーには影響しません。悲しいことに、addersデバッガー内で配列を検査すると、配列がそうであることがわかります。すべてlambdaの関数は最後の値を参照してくださいi、3で、その結果adders[1](3)を返します6。 次のことについて不思議に思います: クロージャは正確に何をキャプチャしますか? lambda現在の値をキャプチャして、値を変更してiも影響を受けないように関数を説得する最もエレガントな方法は何iですか?
249 python  lambda  closures 

3
Java 8ラムダ、Function.identity()またはt-> t
OverаэтотвопросестьответынаStack Overflowнарусском:JavaямбдывJava 8、чтолучшеиспользовать-Function.identity()илиt-&gt; t? Function.identity()メソッドの使い方について質問があります。 次のコードを想像してみてください: Arrays.asList("a", "b", "c") .stream() .map(Function.identity()) // &lt;- This, .map(str -&gt; str) // &lt;- is the same as this. .collect(Collectors.toMap( Function.identity(), // &lt;-- And this, str -&gt; str)); // &lt;-- is the same as this. Function.identity()代わりにstr-&gt;str(またはその逆に)使用する理由はありますか?2番目のオプションの方が読みやすいと思います(もちろん、好みの問題です)。しかし、人が好まれるべき「本当の」理由はありますか?

12
Stream :: flatMapでのJava 8のオプションの使用
新しいJava 8ストリームフレームワークとその仲間は、非常に簡潔なJavaコードを作成しますが、簡潔に行うのが難しい一見シンプルな状況に遭遇しました。 List&lt;Thing&gt; thingsとメソッドを検討してくださいOptional&lt;Other&gt; resolve(Thing thing)。ThingsをOptional&lt;Other&gt;s にマップして、最初のを取得しOtherます。明白な解決策はを使用することですが、ストリームを返す必要things.stream().flatMap(this::resolve).findFirst()がflatMapありOptional、stream()メソッドがない(またはCollectionそれをに変換するか、それをとして表示するメソッドを提供するCollection) 私が思いつくことができる最高のものはこれです: things.stream() .map(this::resolve) .filter(Optional::isPresent) .map(Optional::get) .findFirst(); しかし、それは非常に一般的なケースのように思えるので、ひどく長い時間のように思えます。誰かがより良いアイデアを持っていますか?

4
Java 8ストリーム:複数のフィルターと複雑な条件
Stream複数の条件でaをフィルタリングしたい場合があります。 myList.stream().filter(x -&gt; x.size() &gt; 10).filter(x -&gt; x.isCool()) ... または、複雑な条件と単一の 条件で同じことを行うことができますfilter: myList.stream().filter(x -&gt; x.size() &gt; 10 &amp;&amp; x -&gt; x.isCool()) ... 2つ目のアプローチの方がパフォーマンス特性は優れていると思いますが、それはわかりません。 最初のアプローチは読みやすさで勝ちますが、パフォーマンスのために何が良いですか?

10
ラムダ関数をテンプレート化できますか?
C ++ 11では、ラムダ関数をテンプレート化する方法はありますか?それともテンプレート化するには本質的に具体的すぎますか? 代わりに、古典的なテンプレートクラス/ファンクタを定義できることを理解していますが、問題はより似ています:言語はテンプレートのラムダ関数を許可しますか?
230 c++  templates  lambda  c++11 

19
Javaストリームを1つだけの要素にフィルターする
Java 8を使用Streamしての要素を検索しようとしていますLinkedList。ただし、フィルター条件に一致するのは1つだけであることを保証したいと思います。 このコードを取ります: public static void main(String[] args) { LinkedList&lt;User&gt; users = new LinkedList&lt;&gt;(); users.add(new User(1, "User1")); users.add(new User(2, "User2")); users.add(new User(3, "User3")); User match = users.stream().filter((user) -&gt; user.getId() == 1).findAny().get(); System.out.println(match.toString()); } static class User { @Override public String toString() { return id + " - " + username; …

13
ラムダ式を使用して、オブジェクトのリストをあるタイプから別のタイプに変換します
あるタイプのオブジェクトのリストを読み取り、別のタイプのオブジェクトのリストを生成するforeachループがあります。ラムダ式でも同じ結果が得られると言われました。 var origList = List&lt;OrigType&gt;(); // assume populated var targetList = List&lt;TargetType&gt;(); foreach(OrigType a in origList) { targetList.Add(new TargetType() {SomeValue = a.SomeValue}); } どんな助けでもいただければ幸いです-私はラムダとlinqに初めて感謝します、s
224 c#  generics  lambda 

2
ラムダ式を非同期にマークするにはどうすればよいですか?
私はこのコードを持っています: private async void ContextMenuForGroupRightTapped(object sender, RightTappedRoutedEventArgs args) { CheckBox ckbx = null; if (sender is CheckBox) { ckbx = sender as CheckBox; } if (null == ckbx) { return; } string groupName = ckbx.Content.ToString(); var contextMenu = new PopupMenu(); // Add a command to edit the current Group contextMenu.Commands.Add(new …

8
キャプチャラムダを関数ポインタとして渡す
関数ポインターとしてラムダ関数を渡すことは可能ですか?もしそうなら、私はコンパイルエラーを受け取っているので私は何かを間違ってしているに違いありません。 次の例を考えてみましょう using DecisionFn = bool(*)(); class Decide { public: Decide(DecisionFn dec) : _dec{dec} {} private: DecisionFn _dec; }; int main() { int x = 5; Decide greaterThanThree{ [x](){ return x &gt; 3; } }; return 0; } これをコンパイルしようとすると、次のコンパイルエラーが発生します。 In function 'int main()': 17:31: error: the value of 'x' is …

4
同じタイプのアイテムを含むリストのリストを単一のアイテムリストにマージする方法
質問は紛らわしいですが、次のコードで説明されているように、はるかに明確です。 List&lt;List&lt;T&gt;&gt; listOfList; // add three lists of List&lt;T&gt; to listOfList, for example /* listOfList = new { { 1, 2, 3}, // list 1 of 1, 3, and 3 { 4, 5, 6}, // list 2 { 7, 8, 9} // list 3 }; */ List&lt;T&gt; list = null; …
209 c#  linq  lambda 

23
Java「ラムダ式はこの言語レベルではサポートされていません」
ここに示すように、Java 8のいくつかの新機能をテストし、サンプルをIDE(元々はEclipse、次にIntelliJ)にコピーしました Eclipseはラムダ式をまったくサポートしていません。IntelliJはエラーを報告し続けました ラムダ式はこの言語レベルではサポートされていません これがインストール、コード、またはサポートの問題かどうかを知りたいのですが。

6
匿名の再帰的なPHP関数
再帰的かつ匿名のPHP関数を持つことは可能ですか?これは機能させるための私の試みですが、関数名を渡しません。 $factorial = function( $n ) use ( $factorial ) { if( $n &lt;= 1 ) return 1; return $factorial( $n - 1 ) * $n; }; print $factorial( 5 ); これは階乗を実装するための悪い方法であることも知っています。これは単なる例です。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.