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

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

3
ジェネリックラムダはC ++ 14でどのように機能しますか?
autoC ++ 14標準でジェネリックラムダはどのように機能しますか(引数の型としてのキーワード)? それは、C ++テンプレートに基づいていますか?異なる引数型ごとに、コンパイラーは同じ本体を使用して新しい関数を生成しますが、型を置き換えます(コンパイル時のポリモーフィズム)、それともJavaのジェネリック(型消去)に似ていますか? コード例: auto glambda = [](auto a) { return a; };
114 c++  lambda  auto  c++14 

7
Java 8:java.util.functionのTriFunction(およびその類)はどこにありますか?または代替は何ですか?
java.util.function.BiFunctionが表示されるので、これを行うことができます。 BiFunction<Integer, Integer, Integer> f = (x, y) -> { return 0; }; それが十分ではなく、TriFunctionが必要な場合はどうなりますか?存在しません! TriFunction<Integer, Integer, Integer, Integer> f = (x, y, z) -> { return 0; }; 私は自分のTriFunctionを定義できることを知っていることを追加する必要があると思います。標準ライブラリに含めない理由を理解しようとしているだけです。
113 java  lambda  java-8 

10
配列/文字列のリストを配列/整数のリストに変換するラムダ式
Java 8には強力なラムダ式が付属しているため、 文字列のリスト/配列を整数、浮動小数点数、倍精度数などの配列/リストに変換する関数を書きたいのですが。 通常のJavaでは、次のように簡単です。 for(String str : strList){ intList.add(Integer.valueOf(str)); } しかし、整数の配列に変換される文字列の配列が与えられた場合、どうやってラムダで同じことを達成できますか?

2
Comparator.reversed()はラムダを使用してコンパイルしません
いくつかのUserオブジェクトを含むリストがあり、リストを並べ替えようとしていますが、メソッド参照を使用した場合にのみ機能します。ラムダ式を使用すると、コンパイラによってエラーが発生します。 List<User> userList = Arrays.asList(u1, u2, u3); userList.sort(Comparator.comparing(u -> u.getName())); // works userList.sort(Comparator.comparing(User::getName).reversed()); // works userList.sort(Comparator.comparing(u -> u.getName()).reversed()); // Compiler error エラー: com\java8\collectionapi\CollectionTest.java:35: error: cannot find symbol userList.sort(Comparator.comparing(u -> u.getName()).reversed()); ^ symbol: method getName() location: variable u of type Object 1 error

7
Java8ラムダと匿名クラス
Java8が最近リリースされ、その新しいラムダ式が本当にかっこいいように見えるので、これが私たちがこれまで使用していた匿名クラスの終焉を意味するのかと思っていました。 私はこれについて少し調べていて、Lambda式が体系的にそれらのクラスをどのように置き換えるかについていくつかのクールな例を見つけました。たとえば、コレクションのソートメソッドは、Comparatorの匿名インスタンスを取得してソートを実行するために使用していました。 Collections.sort(personList, new Comparator<Person>(){ public int compare(Person p1, Person p2){ return p1.firstName.compareTo(p2.firstName); } }); 今ラムダを使用して行うことができます: Collections.sort(personList, (Person p1, Person p2) -> p1.firstName.compareTo(p2.firstName)); そして、驚くほど簡潔に見えます。だから私の質問は、ラムダの代わりにJava8でそれらのクラスを使い続ける理由はあるのでしょうか? 編集 同じ質問ですが、反対の方向で、匿名クラスの代わりにラムダを使用する利点は何ですか?ラムダは単一のメソッドインターフェイスでのみ使用できるので、この新しい機能はいくつかの場合にのみ使用されるショートカットだけですか、それとも本当に便利ですか?


4
ラムダ式とジェネリックメソッド
私が一般的なインターフェースを持っているとしましょう: interface MyComparable<T extends Comparable<T>> { public int compare(T obj1, T obj2); } そして方法sort: public static <T extends Comparable<T>> void sort(List<T> list, MyComparable<T> comp) { // sort the list } このメソッドを呼び出して、ラムダ式を引数として渡すことができます。 List<String> list = Arrays.asList("a", "b", "c"); sort(list, (a, b) -> a.compareTo(b)); それはうまくいきます。 しかし、インターフェイスをジェネリックにせず、メソッドをジェネリックにすると、次のようになります。 interface MyComparable { public <T extends …
111 java  generics  lambda  java-8 

2
それはLinqまたはLambdaですか?
私はこれがLinqであることを知っています。 var _Results = from item in _List where item.Value == 1 select item; そして私はこれがラムダであることを知っています: var _Results = _List.Where(x => x.Value == 1); 編集者注:上記は単なるLambdaではなく、述語がLambdaである「メソッド構文」を使用するLinqです。明確にするために、上記のサンプルはどちらもLinqです(私の元の投稿は正しくありませんでしたが、質問を促す混乱を説明するためにエラーを残しました)。 しかし、LinqはLambdaのサブセットですか? 一見同じように見える技術が2つあるのはなぜですか? どちらか一方を選択する技術的な理由はありますか?
105 c#  linq  lambda 

4
C#ラムダ式をメソッドパラメーターとして渡す
渡して再利用できるようにするラムダ式があります。これがコードです: public List<IJob> getJobs(/* i want to pass the lambda expr in here */) { using (SqlConnection connection = new SqlConnection(getConnectionString())) { connection.Open(); return connection.Query<FullTimeJob, Student, FullTimeJob>(sql, (job, student) => { job.Student = student; job.StudentId = student.Id; return job; }, splitOn: "user_id", param: parameters).ToList<IJob>(); } ここで重要なのは、ここで使用しているラムダ式を、このコードを呼び出すメソッドに渡して、再利用できるようにすることです。ラムダ式は、.Queryメソッド内の2番目の引数です。ActionまたはFuncを使用したいと思いますが、これの構文が何であるか、またはそれがどのように機能するかはよくわかりません。誰か私に例を挙げてもらえますか?
105 c#  linq  lambda 

13
Pythonのラムダ式内の代入
オブジェクトのリストがあり、1つを除いて空のすべてのオブジェクトを削除したい filterして、lambda式。 たとえば、入力が次の場合: [Object(name=""), Object(name="fake_name"), Object(name="")] ...出力は次のようになります。 [Object(name=""), Object(name="fake_name")] lambda式に割り当てを追加する方法はありますか?例えば: flag = True input = [Object(name=""), Object(name="fake_name"), Object(name="")] output = filter( (lambda o: [flag or bool(o.name), flag = flag and bool(o.name)][0]), input )

2
値によるC ++ 0xラムダキャプチャは常にconst?
値でキャプチャし、キャプチャした値を非定数にする方法はありますか?ライブラリのファンクターがあり、const以外のメソッドをキャプチャして呼び出したいのですが、constにする必要があります。 以下はコンパイルされませんが、foo :: operator()constを作成すると修正されます。 struct foo { bool operator () ( const bool & a ) { return a; } }; int _tmain(int argc, _TCHAR* argv[]) { foo afoo; auto bar = [=] () -> bool { afoo(true); }; return 0; }
102 c++  lambda  const  c++11 

5
匿名のJavaScript関数f => fは正確には何をしますか?
関数を引数として取る関数を持つサードパーティライブラリを使用しています。特定の関数をパラメーターとして追加するかどうかを決定するためにいくつかの条件チェックを行っています。場合によっては、関数を提供したくありません。その場合にnullを指定すると、エラーがスローされます。 動作するこのコードを見つけましたが、何が起こっているのか完全には理解していません。 compose(__DEV__ ? devTools() : f => f) であるf => fと同等の() => {}空の無名関数?

16
ラムダ関数と入れ子関数( 'def')のどちらを使用するのがより望ましいですか?
私は主にラムダ関数を使用しますが、同じ動作を提供するように見える入れ子関数を使用することもあります。 次に、どちらかが別の関数内で見つかった場合に機能的に同じことを行ういくつかの簡単な例を示します。 ラムダ関数 >>> a = lambda x : 1 + x >>> a(5) 6 入れ子関数 >>> def b(x): return 1 + x >>> b(5) 6 どちらを使用するよりも利点はありますか?(パフォーマンス?読みやすさ?制限?一貫性?など) それも重要ですか?そうでない場合は、Pythonicの原則に違反します。 それを行うには、明白な方法が1つ(できれば1つだけ)あるはずです。

6
Djangoモデルフィールドのデフォルト値を関数呼び出し/呼び出し可能に設定する方法(たとえば、モデルオブジェクトの作成時刻に関連する日付)
編集: Djangoフィールドのデフォルトを、新しいモデルオブジェクトが作成されるたびに評価される関数に設定するにはどうすればよいですか? このコードでは、コードが一度評価され、モデルオブジェクトが作成されるたびにコードを評価するのではなく、作成された各モデルオブジェクトのデフォルトを同じ日付に設定することを除いて、次のようなことをしたいと思います。 from datetime import datetime, timedelta class MyModel(models.Model): # default to 1 day from now my_date = models.DateTimeField(default=datetime.now() + timedelta(days=1)) 元の: 動的で、関数が呼び出されるたびに呼び出されて設定されるように、関数パラメーターのデフォルト値を作成します。どうやってやるの?例えば、 from datetime import datetime def mydate(date=datetime.now()): print date mydate() mydate() # prints the same thing as the previous call; but I want it to be a …

2
なぜ繊維が必要なのですか
ファイバーの場合、古典的な例:フィボナッチ数列の生成 fib = Fiber.new do x, y = 0, 1 loop do Fiber.yield y x,y = y,x+y end end ここにファイバーが必要なのはなぜですか?これを同じProcで書き換えることができます(実際には、クロージャー)。 def clsr x, y = 0, 1 Proc.new do x, y = y, x + y x end end そう 10.times { puts fib.resume } そして prc = clsr 10.times …
100 ruby  lambda  closures  fibers  proc 

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