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

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

9
List <T> OrderByアルファベット順
Framework 3.5でC#を使用しています。Genericをすばやく並べ替えたいList&lt;T&gt;。この例のためにPerson、lastnameのプロパティを持つタイプのリストがあるとします。ラムダ式を使用してこのリストをどのようにソートしますか? List&lt;Person&gt; people = PopulateList(); people.OrderBy(???? =&gt; ?????)
442 c#  generics  list  lambda  sorting 

21
パラメータ名の反映:C#ラムダ式の乱用または構文の優秀さ?
私はMvcContribグリッドコンポーネントを見て、グリッド構文で使用されている構文トリックに魅了されましたが、同時に反発しました。 .Attributes(style =&gt; "width:100%") 上記の構文は、生成されたHTMLのスタイル属性をに設定しwidth:100%ます。注意を払えば、「スタイル」はどこにも指定されていません。式内のパラメーターの名前から推定されます!私はこれを掘り下げる必要があり、「魔法」が発生する場所を見つけました: Hash(params Func&lt;object, TValue&gt;[] hash) { foreach (var func in hash) { Add(func.Method.GetParameters()[0].Name, func(null)); } } したがって、実際には、コードは正式なコンパイル時のパラメータ名を使用して、属性の名前と値のペアのディクショナリを作成しています。結果として得られる構文構成は実際に非常に表現力豊かですが、同時に非常に危険です。 ラムダ式の一般的な使用では、副作用なしで使用される名前の置換が可能です。私が言う本の中の例を参照してくださいcollection.ForEach(book =&gt; Fire.Burn(book))私は私のコードで書くことができます知っているcollection.ForEach(log =&gt; Fire.Burn(log))と、それは同じことを意味します。しかし、ここでMvcContribグリッド構文を使用すると、突然、変数に選択した名前に基づいて積極的に調べて決定を行うコードが見つかります。 それで、C#3.5 / 4.0コミュニティとラムダ式愛好家とのこの一般的な習慣はありますか?または、私が心配する必要のない不正な1つのトリックマーベリックですか?

9
ECMAScript 6でアロー関数を使用する必要があるのはいつですか?
質問は、来たるECMAScript 6(ハーモニー)のコンテキストでコードスタイルについて考え、すでに言語を使用したことがある人を対象としています。 () =&gt; {}し、function () {}我々はES6で関数を作成するには、2つの非常に類似した方法を取得しています。他の言語では、ラムダ関数は匿名であることで区別されることがよくありますが、ECMAScriptでは任意の関数を匿名にすることができます。2つのタイプにはそれぞれ固有の使用法ドメインがあります(this明示的にバインドする必要がある場合、または明示的にバインドしない必要がある場合)。これらのドメイン間では、どちらの表記でも十分なケースが多数あります。 ES6の矢印関数には、少なくとも2つの制限があります。 動作しませんnewし、作成時に使用することはできませんprototype this初期化時にスコープに固定された これらの2つの制限は別として、矢印関数は理論的にはほとんどどこでも通常の関数を置き換えることができます。実際にそれらを使用する正しいアプローチは何ですか?矢印関数を使用する必要があります。例: 「どこでも機能する」、つまりどこでも関数はthis変数にとらわれる必要がなく、オブジェクトを作成していません。 「必要なところすべて」、つまり特定のスコープにバインドする必要があるイベントリスナー、タイムアウトのみ 「短い」関数ではあるが「長い」関数ではない 別の矢印関数を含まない関数のみ 私が探しているのは、ECMAScriptの将来のバージョンで適切な関数表記を選択するためのガイドラインです。ガイドラインは、チーム内の開発者に教えることができるように明確にする必要があり、関数の表記法間で一定のリファクタリングが必要にならないように一貫している必要があります。

14
Java 8でパラメーターとしてラムダを受け取るメソッドを定義するにはどうすればよいですか?
Java 8では、メソッドをLambda式として作成し、参照で渡すことができます(内部では少し作業が必要です)。オンラインでラムダを作成してメソッドで使用する例はたくさんありますが、ラムダをパラメーターとして取るメソッドの作成方法の例はありません。そのための構文は何ですか? MyClass.method((a, b) -&gt; a+b); class MyClass{ //How do I define this method? static int method(Lambda l){ return l(5, 10); } }
363 java  lambda  java-8 


14
最終版と効果的な最終版の違い
私はJava 8でラムダで遊んでいて、警告に出くわしましたlocal variables referenced from a lambda expression must be final or effectively final。匿名クラス内で変数を使用する場合、それらは外部クラスでfinalでなければならないことは知っていますが、それでも-finalと実質的にfinalの違いは何ですか?

14
ラムダを使用する場合、Proc.newを使用する場合
Ruby 1.8では、一方でproc / lambdaと他方で微妙な違いがありますProc.new。 それらの違いは何ですか? どれを選択するかを決める方法についてのガイドラインを教えてください。 Ruby 1.9では、procとlambdaが異なります。どうしたんだ?
336 ruby  lambda  proc 

15
Pythonに複数行のLambdaがない:なぜそうしないのですか?
複数行のラムダは、Pythonの他の構文構造と構文的に衝突するため、Pythonでは追加できないと言われています。今日バスでこれについて考えていたとき、複数行のラムダが衝突する単一のPython構成を考えることができないことに気づきました。私は言語をかなりよく知っているので、これは私を驚かせました。 さて、Guidoが言語に複数行のラムダを含めない理由があるのは確かですが、好奇心からです。複数行のラムダを含めることが曖昧になる状況は何ですか?私が聞いたことは本当ですか、それともPythonが複数行のラムダを許可しない他の理由がありますか?
334 python  syntax  lambda 

13
中断するか、Java 8ストリームから戻るか?
使用する場合は、外部反復を介してIterable我々の使用breakまたはreturnのために、各ループのように強化さから: for (SomeObject obj : someObjects) { if (some_condition_met) { break; // or return obj } } どのように、breakまたは次のようなJava 8ラムダ式で内部反復returnを使用できますか? someObjects.forEach(obj -&gt; { //what to do here? })
313 java  foreach  lambda  java-8 

15
C#ラムダ式:なぜそれらを使用する必要があるのですか?
Microsoft Lambda Expressionのドキュメントをすぐに読みました。 ただし、この種の例は、理解を深めるのに役立ちました。 delegate int del(int i); del myDelegate = x =&gt; x * x; int j = myDelegate(5); //j = 25 それでも、なぜそれがそのようなイノベーションなのか、私にはわかりません。「メソッド変数」が終了したときに死ぬのは単なるメソッドですよね?実際の方法の代わりにこれを使用する必要があるのはなぜですか?
309 c#  c#-3.0  lambda 

17
Java 8ストリーム内からCHECKED例外をスローするにはどうすればよいですか?
Java 8ストリーム/ラムダからCHECKED例外をスローするにはどうすればよいですか? つまり、次のようなコードをコンパイルしたいのです。 public List&lt;Class&gt; getClasses() throws ClassNotFoundException { List&lt;Class&gt; classes = Stream.of("java.lang.Object", "java.lang.Integer", "java.lang.String") .map(className -&gt; Class.forName(className)) .collect(Collectors.toList()); return classes; } Class.forName()上記のメソッドClassNotFoundExceptionはチェックされているをスローするため、このコードはコンパイルされません。 チェック済みの例外をランタイム例外内にラップせず、代わりにラップされた未チェックの例外をスローしたくないことに注意してください。チェックされた例外自体をスローし、醜いtry/ catchesをストリームに追加しないでください。

12
オブジェクトへのLambda / Linqを使用したリストの並べ替え
文字列に「プロパティで並べ替え」の名前があります。オブジェクトのリストを並べ替えるには、Lambda / Linqを使用する必要があります。 例: public class Employee { public string FirstName {set; get;} public string LastName {set; get;} public DateTime DOB {set; get;} } public void Sort(ref List&lt;Employee&gt; list, string sortBy, string sortDirection) { //Example data: //sortBy = "FirstName" //sortDirection = "ASC" or "DESC" if (sortBy == "FirstName") { list …

8
linq拡張メソッドを使用してどのように左外部結合を実行しますか
そのような左外部結合があると仮定します: from f in Foo join b in Bar on f.Foo_Id equals b.Foo_Id into g from result in g.DefaultIfEmpty() select new { Foo = f, Bar = result } 拡張メソッドを使用して同じタスクをどのように表現しますか?例えば Foo.GroupJoin(Bar, f =&gt; f.Foo_Id, b =&gt; b.Foo_Id, (f,b) =&gt; ???) .Select(???)
272 c#  linq-to-sql  lambda 

1
「int main(){(([](){})());}」は有効なC ++ですか?
最近、次の難解なコードに出くわしました。 int main(){(([](){})());} 次のように再フォーマットして、読みやすくします。 int main(){ (([](){})()); // Um... what?!?! } しかし、私(([](){})())は有効なコードがどうあるかについて頭をつかむことができません。 関数ポインタ構文のようには見えません。 オペレーターのオーバーロードのトリックにはなりません。コードはそのままコンパイルされます。 グーグルは、この全記号検索ではあまり役に立たなかった。ただし、Visual Studio 2010でコンパイルされ、何も出力されません。エラーも警告もありませんでした。したがって、有効なコードのように見えます。 私は、JavaScriptとC関数ポインター以外ではとても奇妙な有効なコードを見たことがありません。 これが有効なC ++であると誰かが説明できますか?
271 c++  c++11  lambda  syntax 

10
C ++ 11のラムダで、値によるキャプチャにデフォルトで「可変」キーワードが必要なのはなぜですか?
短い例: #include &lt;iostream&gt; int main() { int n; [&amp;](){n = 10;}(); // OK [=]() mutable {n = 20;}(); // OK // [=](){n = 10;}(); // Error: a by-value capture cannot be modified in a non-mutable lambda std::cout &lt;&lt; n &lt;&lt; "\n"; // "10" } 質問:なぜmutableキーワードが必要なのですか?名前付き関数に渡す従来のパラメーターとはかなり異なります。背後にある理論的根拠は何ですか? 値によるキャプチャの全体のポイントは、ユーザーが一時変数を変更できるようにすることだという印象を受けました。それ以外の場合は、ほとんどの場合、参照によるキャプチャを使用した方がよいのではないでしょうか。 悟りはありますか? (ちなみに私はMSVC2010を使用しています。これは標準のはずです)
256 c++  lambda  c++11 

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