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

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

6
C ++ 11で「auto」を使用して推定されるときのラムダのタイプは何ですか?
ラムダの型は関数ポインターであるという認識がありました。以下のテストを行ったところ、間違っていることがわかりました(デモ)。 #define LAMBDA [] (int i) -> long { return 0; } int main () { long (*pFptr)(int) = LAMBDA; // ok auto pAuto = LAMBDA; // ok assert(typeid(pFptr) == typeid(pAuto)); // assertion fails ! } 上記のコードにポイントがありませんか?そうでない場合、キーワードでtypeof推定されるときのラムダ式は何autoですか?
141 c++  lambda  c++11  typeof  auto 

7
Java 8でラムダを使用してMap <K、V>を別のMap <K、V>に変換するにはどうすればよいですか?
私はJava 8を検討し始めたばかりで、ラムダを試してみるために、最近書​​いた非常に単純なものを書き直そうと思った。文字列から列へのマップを別の文字列から列へのマップに変換する必要があります。新しいマップの列は、最初のマップの列の防御コピーです。列にはコピーコンストラクタがあります。これまでのところ最も近いのは: Map&lt;String, Column&gt; newColumnMap= new HashMap&lt;&gt;(); originalColumnMap.entrySet().stream().forEach(x -&gt; newColumnMap.put(x.getKey(), new Column(x.getValue()))); しかし、もっと良い方法があるはずだと私は確信しており、アドバイスをいただければ幸いです。
140 java  map  lambda  java-8  java-stream 

7
無名メソッドをvarに割り当てることができないのはなぜですか?
私は次のコードを持っています: Func&lt;string, bool&gt; comparer = delegate(string value) { return value != "0"; }; ただし、次のものはコンパイルされません。 var comparer = delegate(string value) { return value != "0"; }; コンパイラがなぜそれを理解できないのFunc&lt;string, bool&gt;ですか?これは1つの文字列パラメータを取り、ブール値を返します。代わりに、それは私にエラーを与えます: 暗黙的に型指定されたローカル変数に匿名メソッドを割り当てることはできません。 私は1つの推測を持っています、そしてそれがvarバージョンがコンパイルされた場合、私が以下を持っているならばそれは一貫性に欠けるでしょう: var comparer = delegate(string arg1, string arg2, string arg3, string arg4, string arg5) { return false; }; Func &lt;&gt;は最大4つの引数しか許可しないため、上記は意味を成しません(.NET 3.5では、これが私が使用しているものです)。おそらく誰かが問題を明確にすることができるでしょう。ありがとう。

6
JavaではオプションのorElse
私はJava 8で新しいOptional型を使用していて、機能的にサポートされていない一般的な操作のように思われるものに遭遇しました:「orElseOptional」 次のパターンを考えてみます。 Optional&lt;Result&gt; resultFromServiceA = serviceA(args); if (resultFromServiceA.isPresent) return result; else { Optional&lt;Result&gt; resultFromServiceB = serviceB(args); if (resultFromServiceB.isPresent) return resultFromServiceB; else return serviceC(args); } このパターンには多くの形式がありますが、結局のところ、現在のものが存在しない場合にのみ呼び出される、新しいオプションを生成する関数を取るオプションの「orElse」が必要になります。 実装は次のようになります。 public Optional&lt;T&gt; orElse(Supplier&lt;Optional&lt;? extends T&gt;&gt; otherSupplier) { return value != null ? this : other.get(); } そのようなメソッドが存在しない理由があるのか​​、意図せずにOptionalを使用しているだけなのか、そしてこのケースに対処するために人々が他にどのようにしてきたのか、私は興味があります。 私のコードで作業している人々は必ずしもそれらが存在することを知っているとは限らないため、カスタムユーティリティクラス/メソッドを含むソリューションはエレガントではないと思います。 また、誰かが知っている場合、そのようなメソッドはJDK 9に含まれますか?また、どこでそのようなメソッドを提案できますか?これは、APIのかなりの省略のように思えます。
137 java  lambda  java-8  optional  java-9 

2
このオブジェクトの有効期限を延長するクロージャーはC#コンパイラのバグですか?
私がいくつかの極端に遭遇したとき、私はオブジェクトのライフタイムを(合法的に)延長する可能性についての質問に答えていましたC#コンパイラーの奇妙なコード生成(問題の場合は4.0。 私が見つけることができる最も短い再現は次のとおりです: staticを呼び出しているときにローカルをキャプチャするラムダを作成する 包含型のメソッド。 生成されたデリゲート参照を、それを含むオブジェクトのインスタンスフィールドに割り当てます。 結果:コンパイラーは、理由がない場合にラムダを作成したオブジェクトを参照するクロージャーオブジェクトを作成します。デリゲートの「内部」ターゲットは静的メソッドであり、ラムダ作成オブジェクトのインスタンスメンバーは不要です。デリゲートが実行されたときに触れられる(されない)。事実上、コンパイラーは、プログラマーがthis理由なしに取り込んだように機能します。 class Foo { private Action _field; public void InstanceMethod() { var capturedVariable = Math.Pow(42, 1); _field = () =&gt; StaticMethod(capturedVariable); } private static void StaticMethod(double arg) { } } リリースビルドから生成されたコード(「より単純な」C#に逆コンパイル)は、次のようになります。 public void InstanceMethod() { &lt;&gt;c__DisplayClass1 CS$&lt;&gt;8__locals2 = new &lt;&gt;c__DisplayClass1(); CS$&lt;&gt;8__locals2.&lt;&gt;4__this = this; // What's …

3
ラムダで並べ替える方法は?
sort(mMyClassVector.begin(), mMyClassVector.end(), [](const MyClass &amp; a, const MyClass &amp; b) { return a.mProperty &gt; b.mProperty; }); インスタンスメソッドをバインドする代わりに、ラムダ関数を使用してカスタムクラスを並べ替えたいのですが。ただし、上記のコードではエラーが発生します。 エラーC2564: 'const char *':組み込み型への関数スタイルの変換は1つの引数しか取れません で正常に動作しboost::bind(&amp;MyApp::myMethod, this, _1, _2)ます。
136 c++  sorting  lambda  char  const 

4
ラムダのパラメーターの型と戻り値の型を理解することは可能ですか?
ラムダを考えると、それがパラメーターの型と戻り値の型を理解することは可能ですか?はいの場合、どのように? 基本的に、私はlambda_traitsこれを以下の方法で使用できるようにしたい: auto lambda = [](int i) { return long(i*10); }; lambda_traits&lt;decltype(lambda)&gt;::param_type i; //i should be int lambda_traits&lt;decltype(lambda)&gt;::return_type l; //l should be long 背後にある動機は、lambda_traits引数としてラムダを受け入れる関数テンプレートで使用したいことであり、関数内のパラメーターの型と戻りの型を知る必要があります。 template&lt;typename TLambda&gt; void f(TLambda lambda) { typedef typename lambda_traits&lt;TLambda&gt;::param_type P; typedef typename lambda_traits&lt;TLambda&gt;::return_type R; std::function&lt;R(P)&gt; fun = lambda; //I want to do this! //... } とりあえず、ラムダは引数を1つだけ取ると想定できます。 …

7
ラムダ式で使用される変数はfinalまたは事実上finalである必要があります
ラムダ式で使用される変数はfinalまたは事実上finalである必要があります 使用しようとするcalTzと、このエラーが表示されます。 private TimeZone extractCalendarTimeZoneComponent(Calendar cal, TimeZone calTz) { try { cal.getComponents().getComponents("VTIMEZONE").forEach(component -&gt; { VTimeZone v = (VTimeZone) component; v.getTimeZoneId(); if (calTz == null) { calTz = TimeZone.getTimeZone(v.getTimeZoneId().getValue()); } }); } catch (Exception e) { log.warn("Unable to determine ical timezone", e); } return null; }
134 java  lambda 

1
Javaの「SAMタイプ」とは何ですか?
Java-8仕様を読んでいると、「SAMタイプ」への参照が頻繁に見られます。私はこれが何であるかについての明確な説明を見つけることができませんでした。 SAMタイプとは何ですか?また、使用される場合のシナリオ例は何ですか?
133 java  lambda  java-8 

9
C#でのアクションデリゲートの使用[終了]
休業。この質問はもっと集中する必要があります。現在、回答を受け付けていません。 この質問を改善してみませんか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てます。 2年前休業。 この質問を改善する 私はアクションデリゲートをC#で操作し、それらについてさらに学び、それらがどこに役立つかを考えていました。 誰かがアクションデリゲートを使用しましたか?それとも役に立つかもしれない例をいくつか挙げていただけますか?
132 c#  lambda  delegates  action 



2
ラムダキャプチャと同じ名前のパラメータ-誰が他をシャドウしている?(clangとgcc)
auto foo = "You're using g++!"; auto compiler_detector = [foo](auto foo) { std::puts(foo); }; compiler_detector("You're using clang++!"); clang ++ 3.6.0以降では「clang ++を使用しています!」と出力されます。キャプチャ fooが使用されていないことを警告します。 g ++ 4.9.0以降では、「あなたはg ++を使用しています!」と出力します。パラメータ fooが使用されていないことを警告します。 ここでC ++標準に正確に準拠しているコンパイラはどれですか? ワンドボックスの例

6
ラムダが自分自身を返す:これは合法ですか?
このかなり役に立たないプログラムを考えてみましょう: #include &lt;iostream&gt; int main(int argc, char* argv[]) { int a = 5; auto it = [&amp;](auto self) { return [&amp;](auto b) { std::cout &lt;&lt; (a + b) &lt;&lt; std::endl; return self(self); }; }; it(it)(4)(6)(42)(77)(999); } 基本的に、自分自身を返すラムダを作成しようとしています。 MSVCはプログラムをコンパイルし、実行します gccはプログラムをコンパイルし、segfaultします clangは次のメッセージでプログラムを拒否します。 error: function 'operator()&lt;(lambda at lam.cpp:6:13)&gt;' with deduced return type cannot …

8
ラムダ式をプレーンなデリゲートパラメーターとして提供するときにキャストする必要がある理由
メソッドSystem.Windows.Forms.Control.Invoke(Delegate method)を取る なぜこれがコンパイル時エラーになるのですか? string str = "woop"; Invoke(() =&gt; this.Text = str); // Error: Cannot convert lambda expression to type 'System.Delegate' // because it is not a delegate type しかし、これはうまくいきます: string str = "woop"; Invoke((Action)(() =&gt; this.Text = str)); メソッドがプレーンなデリゲートを期待するとき?
124 c#  c#-3.0  delegates  lambda 

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