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

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

4
C#がforeachで変数を再利用する理由はありますか?
C#でラムダ式または無名メソッドを使用する場合、変更されたクロージャーの落とし穴へのアクセスに注意する必要があります。例えば: foreach (var s in strings) { query = query.Where(i => i.Prop == s); // access to modified closure ... } 変更されたクロージャのため、上記のコードではWhere、クエリのすべての句がの最終値に基づいていますs。 ここで説明したように、これsは、foreach上記のループで宣言された変数がコンパイラで次のように変換されるために発生します。 string s; while (enumerator.MoveNext()) { s = enumerator.Current; ... } このようにする代わりに: while (enumerator.MoveNext()) { string s; s = enumerator.Current; ... } ここで指摘したように、ループの外側で変数を宣言してもパフォーマンス上の利点はありません。通常の状況では、これを行うために考えられる唯一の理由は、ループのスコープ外で変数を使用する場合です。 string s; while (enumerator.MoveNext()) { …



21
Java 8 List <V>からMap <K、V>へ
Java 8のストリームとラムダを使用して、オブジェクトのリストをマップに変換したい。 これは私がJava 7以下でそれを書く方法です。 private Map&lt;String, Choice&gt; nameMap(List&lt;Choice&gt; choices) { final Map&lt;String, Choice&gt; hashMap = new HashMap&lt;&gt;(); for (final Choice choice : choices) { hashMap.put(choice.getName(), choice); } return hashMap; } Java 8とGuavaを使用してこれを簡単に達成できますが、Guavaなしでこれを行う方法を知りたいです。 グアバでは: private Map&lt;String, Choice&gt; nameMap(List&lt;Choice&gt; choices) { return Maps.uniqueIndex(choices, new Function&lt;Choice, String&gt;() { @Override public String apply(final Choice …

26
Pythonラムダが役立つのはなぜですか?[閉まっている]
休業。この質問には、より焦点を当てる必要があります。現在、回答を受け付けていません。 この質問を改善してみませんか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てます。 4年前休業。 私はPythonラムダを理解しようとしています。ラムダは、現実には忘れておくべき「興味深い」言語アイテムの1つですか? 私はそれが必要になるかもしれないいくつかのエッジケースがあると確信していますが、それが曖昧であること、将来のリリースで再定義される可能性(私のさまざまな定義に基づく私の仮定)、およびコーディングの明快さの低下-それがあれば避けられる? これは、C型のオーバーフロー(バッファオーバーフロー)を思い出します。つまり、最上位の変数をポイントし、他のフィールド値を設定するためにオーバーロードしています。それは一種の技術者のショーマンシップのように感じますが、メンテナンスコーダーの悪夢です。

14
リスト内包表記対ラムダ+フィルター
たまたま、基本的なフィルタリングの必要性があることに気づきました。リストがあり、アイテムの属性でフィルタリングする必要があります。 私のコードは次のようになりました: my_list = [x for x in my_list if x.attribute == value] でも、こんなふうに書いた方がいいのではないかと思いました。 my_list = filter(lambda x: x.attribute == value, my_list) より読みやすく、パフォーマンスに必要な場合はラムダを取り出して何かを取得できます。 質問です:2番目の方法を使用する際に注意点はありますか?パフォーマンスの違いはありますか?Pythonic Way™がまったくないので、さらに別の方法で実行する必要がありますか(ラムダの代わりにitemgetterを使用するなど)?


18
ラムダとDistinct()?
そうです、私は列挙可能であり、そこから明確な値を取得したいと考えています。 使用してSystem.Linq、と呼ばれる拡張メソッドは、もちろんありますDistinct。単純なケースでは、次のようにパラメーターなしで使用できます。 var distinctValues = myStringList.Distinct(); ええと、いいのですが、等価性を指定する必要があるオブジェクトの列挙可能オブジェクトがある場合、使用できる唯一のオーバーロードは次のとおりです。 var distinctValues = myCustomerList.Distinct(someEqualityComparer); 等価比較引数はのインスタンスでなければなりませんIEqualityComparer&lt;T&gt;。もちろん、私はこれを行うことができますが、それはいくぶん冗長で、まあまあです。 私が期待していたのは、ラムダをとるオーバーロード、たとえばFunc &lt;T、T、bool&gt;です。 var distinctValues = myCustomerList.Distinct((c1, c2) =&gt; c1.CustomerId == c2.CustomerId); 誰かがそのような拡張機能が存在するかどうか、または同等の回避策を知っていますか?それとも何か不足していますか? または、インラインでIEqualityComparerを指定する方法はありますか(私を当惑させます)? 更新 この件に関するMSDNフォーラムの投稿に対するAnders Hejlsbergからの返信を見つけました。彼は言う: あなたが遭遇する問題は、2つのオブジェクトが等しい場合、それらは同じGetHashCode戻り値を持つ必要があることです(そうしないと、Distinctによって内部的に使用されるハッシュテーブルが正しく機能しません)。EqualsとGetHashCodeの互換性のある実装を単一のインターフェイスにパッケージ化するため、IEqualityComparerを使用します。 それは理にかなっていると思います



21
ラムダ式からプロパティ名を取得する
ラムダ式を介して渡されたときにプロパティ名を取得するより良い方法はありますか?これが私が現在持っているものです。 例えば。 GetSortingInfo&lt;User&gt;(u =&gt; u.UserId); プロパティが文字列の場合にのみ、それをメンバー式としてキャストすることで機能しました。すべてのプロパティが文字列であるとは限らないため、オブジェクトを使用する必要がありましたが、それらはそれらの単項式を返します。 public static RouteValueDictionary GetInfo&lt;T&gt;(this HtmlHelper html, Expression&lt;Func&lt;T, object&gt;&gt; action) where T : class { var expression = GetMemberInfo(action); string name = expression.Member.Name; return GetInfo(html, name); } private static MemberExpression GetMemberInfo(Expression method) { LambdaExpression lambda = method as LambdaExpression; if (lambda == null) throw new …

22
リストの平均を見つける
Pythonでリストの平均を見つけなければなりません。これはこれまでのところ私のコードです l = [15, 18, 2, 36, 12, 78, 5, 6, 9] print reduce(lambda x, y: x + y, l) 私はそれを持っているので、リストの値を一緒に追加しますが、それらをそれらに分割する方法を知りませんか?
473 python  list  lambda  average  reduce 

25
例外をスローするJava 8 Lambda関数?
Stringパラメータを持ち、を返すメソッドへの参照を作成する方法を知っていますint。 Function&lt;String, Integer&gt; ただし、関数が例外をスローする場合、これは機能しません。たとえば、次のように定義されているとします。 Integer myMethod(String s) throws IOException この参照をどのように定義しますか?
469 java  lambda  java-8 

9
LINQとLambdaに参加する
LINQとLambdaで書かれたクエリに問題があります。これまでのところ、多くのエラーが発生しています。ここに私のコードがあります。 int id = 1; var query = database.Posts.Join(database.Post_Metas, post =&gt; database.Posts.Where(x =&gt; x.ID == id), meta =&gt; database.Post_Metas.Where(x =&gt; x.Post_ID == id), (post, meta) =&gt; new { Post = post, Meta = meta }); 私はLINQを初めて使用するので、このクエリが正しいかどうかはわかりません。
458 c#  linq  join  lambda 

14
Java 8でjava.util.stream.Streamからリストを取得する
コレクションを簡単にフィルター処理するために、Java 8ラムダをいじっていました。しかし、同じステートメント内で新しいリストとして結果を取得する簡潔な方法は見つかりませんでした。これまでのところ、私の最も簡潔なアプローチは次のとおりです。 List&lt;Long&gt; sourceLongList = Arrays.asList(1L, 10L, 50L, 80L, 100L, 120L, 133L, 333L); List&lt;Long&gt; targetLongList = new ArrayList&lt;&gt;(); sourceLongList.stream().filter(l -&gt; l &gt; 100).forEach(targetLongList::add); 新しい結果リストを生成せずに停止したため、ネット上の例は私の質問に答えませんでした。より簡潔な方法があるはずです。私がいることを、期待したStreamクラスには、などのメソッドがありtoList()、toSet()... targetLongList3行目で変数を直接割り当てる方法はありますか?

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