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

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

9
Java 8での複数のnullチェック
複数のnullチェックに対して少し醜い以下のコードがあります。 String s = null; if (str1 != null) { s = str1; } else if (str2 != null) { s = str2; } else if (str3 != null) { s = str3; } else { s = str4; } だからOptional.ofNullable、以下のように使ってみましたが、誰かが私のコードを読んでいるかどうかはまだわかりません。Java 8でそれを行うための最良のアプローチは何ですか? String s = Optional.ofNullable(str1) .orElse(Optional.ofNullable(str2) .orElse(Optional.ofNullable(str3) .orElse(str4))); Java …

4
std :: functionはどのように実装されていますか?
私が見つけたソースによると、ラムダ式は基本的に、オーバーロードされた関数呼び出し演算子と参照される変数をメンバーとして持つクラスを作成するコンパイラーによって実装されます。これはラムダ式のサイズが変化することを示唆しており、サイズが任意に大きくなることができる十分な参照変数が与えられます。 アンはstd::function持つべき一定の大きさを、同じ種類のいずれかのラムダを含む、呼び出し可能オブジェクトの任意の種類を、包むことができなければなりません。どのように実装されていますか?場合はstd::function、内部では、その標的にポインタを使用し、そして何が起こるか、ときstd::functionインスタンスがコピーまたは移動されましたか?関連するヒープ割り当てはありますか?
98 c++  c++11  lambda 


10
StopWatchのタイミングをデリゲートまたはラムダでラップしていますか?
私はこのようなコードを書いていて、少し速くて汚いタイミングをとっています: var sw = new Stopwatch(); sw.Start(); for (int i = 0; i < 1000; i++) { b = DoStuff(s); } sw.Stop(); Console.WriteLine(sw.ElapsedMilliseconds); 確かに、タイミングコードのこのビットを(神は禁じる)数回カットアンドペーストしてに置き換えるのDoStuff(s)ではなく、派手な.NET 3.0ラムダとして呼び出す方法がありDoSomethingElse(s)ます。 私はそれができることを知っていますがDelegate、ラムダの方法について疑問に思っています。
95 c#  .net  delegates  lambda 

5
JavaのラムダforEach()からの戻り値
forEach()ラムダ式の可能性を発見するために、いくつかのfor-eachループをラムダメソッドに変更しようとしています。以下が可能であるようです: ArrayList<Player> playersOfTeam = new ArrayList<Player>(); for (Player player : players) { if (player.getTeam().equals(teamName)) { playersOfTeam.add(player); } } ラムダ付き forEach() players.forEach(player->{if (player.getTeam().equals(teamName)) {playersOfTeam.add(player);}}); しかし、次のものは機能しません: for (Player player : players) { if (player.getName().contains(name)) { return player; } } ラムダ付き players.forEach(player->{if (player.getName().contains(name)) {return player;}}); 最後の行の構文に何か問題がありますforEach()か、それともメソッドから戻ることは不可能ですか?

4
Kotlinで匿名インターフェースのインスタンスを作成するにはどうすればよいですか?
私はサードパーティのJavaライブラリを持っています。これは次のようなインターフェイスを持つオブジェクトです。 public interface Handler<C> { void call(C context) throws Exception; } 次のようなJava匿名クラスと同様に、Kotlinで簡潔に実装するにはどうすればよいですか? Handler<MyContext> handler = new Handler<MyContext> { @Override public void call(MyContext context) throws Exception { System.out.println("Hello world"); } } handler.call(myContext) // Prints "Hello world"

5
LINQを使用してList <string>のすべての文字列を小文字に変換する方法
私は興味をそそるStackOverflowのこちらの応答の1つに昨日コードスニペットを見ました。それはこのようなものでした: List&lt;string&gt; myList = new List&lt;string&gt; {"aBc", "HELLO", "GoodBye"}; myList.ForEach(d=&gt;d.ToLower()); 私はそれを使用してmyList内のすべての項目を小文字に変換できることを望んでいました。しかし、それは起こりません...これを実行した後、myListの大文字小文字は変更されません。 したがって、私の質問は、LINQ式とLambda式を使用して、これと同様の方法でリストのコンテンツを簡単に反復して変更する方法があるかどうかです。 ありがとう、マックス
94 c#  linq  lambda  foreach 

5
Optional.ifPresent()の適切な使用法
Java 8のAPI のifPresent()メソッドを理解しようとしていOptionalます。 私は単純なロジックを持っています: Optional&lt;User&gt; user=... user.ifPresent(doSomethingWithUser(user.get())); しかし、これによりコンパイルエラーが発生します。 ifPresent(java.util.functionError:(186, 74) java: 'void' type not allowed here) もちろん、私はこのようなことをすることができます: if(user.isPresent()) { doSomethingWithUser(user.get()); } しかし、これは雑然としたnull小切手とまったく同じです。 コードをこれに変更すると: user.ifPresent(new Consumer&lt;User&gt;() { @Override public void accept(User user) { doSomethingWithUser(user.get()); } }); コードが汚れてきているので、以前のnullチェックに戻ることを考えさせられます。 何か案は?
94 java  lambda  java-8  optional 

1
PylintからのCell-var-from-loop警告
次のコードの場合: for sort_key, order in query_data['sort']: results.sort(key=lambda k: get_from_dot_path(k, sort_key), reverse=(order == -1)) Pylintはエラーを報告しました: ループで定義されたセル変数sort_key(cell-var-from-loop) 誰かがここで何が起こっているのかヒントを与えることができますか?pylintソースコードからの説明は次のとおりです。 クロージャで使用される変数は、ループで定義されます。これにより、すべてのクロージャがクローズドオーバー変数に同じ値を使用することになります。 しかし、私にはそれが何を意味するのか見当がつかない。誰かが問題の例を挙げてもらえますか?

14
誰もが話し続けるこの「ラムダ」とは何ですか?
誰もが話し続けるこの「ラムダ」とは何ですか?多くの人がそれを気に入っているようですが、そこから収集できるのは、たくさんのコード行を単一の式に詰め込む方法にすぎません。 誰かがその真の価値について教えてくれませんか?
93 lambda 


2
C ++で[=]はどういう意味ですか?
何[=]が知りたい?これが短い例です template &lt;typename T&gt; std::function&lt;T (T)&gt; makeConverter(T factor, T offset) { return [=] (T input) -&gt; T { return (offset + input) * factor; }; } auto milesToKm = makeConverter(1.60936, 0.0); []代わりにコードはどのように機能し[=]ますか? と思います std::function&lt;T (T)&gt; (T)引数として返され、型を返す関数プロトタイプを意味しますTか?
93 c++  c++11  lambda 

8
関数ポインターとしてのキャプチャーを備えたC ++ラムダ
私はC ++ラムダとそれらの関数ポインタへの暗黙の変換で遊んでいました。私の最初の例は、それらをftw関数のコールバックとして使用していました。これは期待どおりに機能します。 #include &lt;ftw.h&gt; #include &lt;iostream&gt; using namespace std; int main() { auto callback = [](const char *fpath, const struct stat *sb, int typeflag) -&gt; int { cout &lt;&lt; fpath &lt;&lt; endl; return 0; }; int ret = ftw("/etc", callback, 1); return ret; } キャプチャを使用するように変更した後: int main() { vector&lt;string&gt; entries; …

1
+を使用してラムダの関数ポインタとstd :: functionのあいまいなオーバーロードを解決する
次のコードでは、への最初の呼び出しfooがあいまいであるため、コンパイルに失敗します。 2番目は+、ラムダの前に追加され、関数ポインターオーバーロードに解決されます。 #include &lt;functional&gt; void foo(std::function&lt;void()&gt; f) { f(); } void foo(void (*f)()) { f(); } int main () { foo( [](){} ); // ambiguous foo( +[](){} ); // not ambiguous (calls the function pointer overload) } +ここでの表記は何ですか?

2
C ++ 11ラムダ実装とメモリモデル
C ++ 11クロージャーについて正しく考える方法とstd::function、それらがどのように実装され、メモリーがどのように処理されるかという点について、いくつかの情報が欲しいのですが。 私は時期尚早の最適化を信じていませんが、私は新しいコードを書くときに自分の選択がパフォーマンスに与える影響を慎重に検討する習慣があります。また、マイクロコントローラーやオーディオシステムなど、非決定的なメモリ割り当て/割り当て解除の一時停止を回避するために、かなりの量のリアルタイムプログラミングを行っています。 したがって、C ++ラムダをいつ使用するか、または使用しないかについての理解を深めたいと思います。 私の現在の理解では、キャプチャされたクロージャのないラムダは、Cコールバックとまったく同じです。ただし、環境が値または参照によってキャプチャされると、匿名オブジェクトがスタックに作成されます。関数から値のクロージャを返す必要がある場合は、それをでラップしstd::functionます。この場合、クロージャメモリはどうなりますか?スタックからヒープにコピーされますか?が解放されるたびに解放されますか?std::functionつまり、aのように参照カウントされstd::shared_ptrますか? リアルタイムシステムでラムダ関数のチェーンをセットアップし、Bを継続引数としてAに渡して、処理パイプラインA-&gt;Bが作成されると思います。この場合、AクロージャーとBクロージャーは一度割り当てられます。これらがスタックとヒープのどちらに割り当てられるかはわかりませんが。ただし、一般的に、これはリアルタイムシステムで安全に使用できます。一方、Bがラムダ関数Cを作成してそれが返す場合、Cのメモリは繰り返し割り当てと割り当て解除が行われ、リアルタイムの使用には受け入れられません。 疑似コードでは、DSPループはリアルタイムで安全になると思います。ブロックAを処理してからBを処理したいのですが、Aは引数を呼び出します。これらの関数は両方ともstd::functionオブジェクトを返すのでf、std::functionオブジェクトは、環境がヒープに格納されます。 auto f = A(B); // A returns a function which calls B // Memory for the function returned by A is on the heap? // Note that A and B may maintain a state // via mutable value-closure! for (t=0; t&lt;1000; …
92 c++  memory  lambda  c++11 

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