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

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

2
c ++ 11ラムダは、使用しない変数をキャプチャしますか?
[=]すべてのローカル変数をラムダ内の値でキャプチャすることを示すために使用すると、コピーされる関数内のすべてのローカル変数、またはラムダによって使用されるすべてのローカル変数だけになりますか? したがって、たとえば、私が持っている場合: vector<int> my_huge_vector(100000); int my_measly_int; some_function([=](int i){ return my_measly_int + i; }); my_huge_vectorはラムダで使用していなくてもコピーされますか?
123 c++  lambda  c++11 

5
一部のC#ラムダ式が静的メソッドにコンパイルされるのはなぜですか?
以下のコードからわかるように、Action<>オブジェクトを変数として宣言しています。 このアクションメソッドデリゲートが静的メソッドのように動作する理由を誰かに教えていただけませんか? なぜtrue次のコードで戻るのですか? コード: public static void Main(string[] args) { Action<string> actionMethod = s => { Console.WriteLine("My Name is " + s); }; Console.WriteLine(actionMethod.Method.IsStatic); Console.Read(); } 出力:
122 c#  .net  reflection  lambda 


10
ストリームをコピーして、「ストリームはすでに操作されているか、閉じられています」
2回処理できるように、Java 8ストリームを複製したいと思います。私ができるcollectことから、新たなストリームを取得し、リストのように。 // doSomething() returns a stream List<A> thing = doSomething().collect(toList()); thing.stream()... // do stuff thing.stream()... // do other stuff しかし、もっと効率的でエレガントな方法があるべきだと思います。 コレクションに変換せずにストリームをコピーする方法はありますか? 私は実際にはEithersのストリームで作業しているので、右のプロジェクションに移動して別の方法で処理する前に、左のプロジェクションを1つの方法で処理したいとします。このようなもの(これまでのところ、私はtoListトリックを使用することを余儀なくされています)。 List<Either<Pair<A, Throwable>, A>> results = doSomething().collect(toList()); Stream<Pair<A, Throwable>> failures = results.stream().flatMap(either -> either.left()); failures.forEach(failure -> ... ); Stream<A> successes = results.stream().flatMap(either -> either.right()); successes.forEach(success -> ... );

9
ラムダ式には、コード行を保存する以外の用途がありますか?
ラムダ式には、コード行を保存する以外の用途がありますか? 簡単に解決できない問題を解決するラムダの特別な機能はありますか?私が見た典型的な使用法はこれを書く代わりに: Comparator<Developer> byName = new Comparator<Developer>() { @Override public int compare(Developer o1, Developer o2) { return o1.getName().compareTo(o2.getName()); } }; ラムダ式を使用してコードを短縮できます。 Comparator<Developer> byName = (Developer o1, Developer o2) -> o1.getName().compareTo(o2.getName());
120 java  lambda  java-8 

8
Kotlinの「forEach」の「break」と「continue」
Kotlinには、forEachまたはのような非常に優れた反復関数repeatがありますが、breakand continue演算子でそれらを操作することはできません(ローカルと非ローカルの両方)。 repeat(5) { break } (1..5).forEach { continue@forEach } 目標は、関数構文を通常のループにできるだけ近づけることです。一部の古いバージョンのKotlinではそれは間違いなく可能でしたが、構文を再現するのに苦労しています。 問題はラベル(M12)のバグかもしれませんが、最初の例はとにかく動作するはずです。 特別なトリック/注釈についてどこかで読んだようですが、この件に関する参照を見つけることができませんでした。次のようになります。 public inline fun repeat(times: Int, @loop body: (Int) -> Unit) { for (index in 0..times - 1) { body(index) } }
120 loops  foreach  lambda  kotlin 

6
Java 8で2つの矢印の付いたラムダは何を意味しますか?
以前にいくつかのJava 8チュートリアルを読んだことがあります。 今、私は次のトピックに遭遇しました: Javaはカリー化をサポートしていますか? ここでは、次のコードが表示されます。 IntFunction<IntUnaryOperator> curriedAdd = a -> b -> a + b; System.out.println(curriedAdd.apply(1).applyAsInt(12)); この例では2つの要素を合計することを理解していますが、構造を理解できません。 a -> b -> a + b; 式の左側によると、この行は次の関数を実装する必要があります。 R apply(int value); これの前に、私は1つの矢だけでラムダに会いました。
118 java  lambda  java-8  currying 


5
「空の」C#ラムダ式を指定する方法はありますか?
何もしない "空の"ラムダ式を宣言したいのですが。DoNothing()メソッドを必要とせずにこのようなことをする方法はありますか? public MyViewModel() { SomeMenuCommand = new RelayCommand( x => DoNothing(), x => CanSomeMenuCommandExecute()); } private void DoNothing() { } private bool CanSomeMenuCommandExecute() { // this depends on my mood } これを行う私の意図は、WPFコマンドの有効/無効状態を制御することだけですが、それはさておきです。多分それは私にとって早すぎる時期ではあるかもしれませんがx => DoNothing()、同じことを達成するためにこのような方法でラムダ式を宣言するだけの方法があるはずだと思います: SomeMenuCommand = new RelayCommand( x => (), x => CanSomeMenuCommandExecute()); これを行う方法はありますか?何もしないメソッドを必要とする必要はないようです。
118 c#  lambda 

9
.net Func <T>を.net Expression <Func <T >>に変換する
ラムダから式への移行は、メソッド呼び出しを使用すると簡単です... public void GimmeExpression(Expression&lt;Func&lt;T&gt;&gt; expression) { ((MemberExpression)expression.Body).Member.Name; // "DoStuff" } public void SomewhereElse() { GimmeExpression(() =&gt; thing.DoStuff()); } しかし、私はFuncを式に変えたいのですが、まれなケースだけです... public void ContainTheDanger(Func&lt;T&gt; dangerousCall) { try { dangerousCall(); } catch (Exception e) { // This next line does not work... Expression&lt;Func&lt;T&gt;&gt; DangerousExpression = dangerousCall; var nameOfDanger = ((MemberExpression)dangerousCall.Body).Member.Name; throw new DangerContainer( …
118 c#  .net  lambda  expression  func 

4
新しいcomputeIfAbsent関数を使用するにはどうすればよいですか?
Map.computeIfAbsentを使用したいのですが、学部のラムダ式になってから時間がかかりすぎています。 ほぼドキュメントから直接:物事を行う古い方法の例を示します: Map&lt;String, Boolean&gt; whoLetDogsOut = new ConcurrentHashMap&lt;&gt;(); String key = "snoop"; if (whoLetDogsOut.get(key) == null) { Boolean isLetOut = tryToLetOut(key); if (isLetOut != null) map.putIfAbsent(key, isLetOut); } そして新しい方法: map.computeIfAbsent(key, k -&gt; new Value(f(k))); しかし、彼らの例では、私は完全に「理解している」とは思っていません。これを表現する新しいラムダの方法を使用するようにコードをどのように変換しますか?

11
ラムダ内からローカル変数を変更する
でローカル変数を変更するとforEach、コンパイルエラーが発生します。 正常 int ordinal = 0; for (Example s : list) { s.setOrdinal(ordinal); ordinal++; } ラムダと int ordinal = 0; list.forEach(s -&gt; { s.setOrdinal(ordinal); ordinal++; }); これを解決する方法はありますか?
115 java  lambda  java-8 

10
List <T>からn番目ごとのアイテムを取得するにはどうすればよいですか?
.NET 3.5を使用してnおり、リストから* *番目のアイテムをすべて取得できるようにしたいと考えています。ラムダ式とLINQのどちらを使用してそれが実現されるかについては気になりません。 編集する この質問はかなりの議論を引き起こしたようです(これは良いことですよね?)。私が学んだ主なことは、あなたが何かをするためのあらゆる方法を知っていると思ったら(これほど簡単ですが)、もう一度考え直してください!
114 c#  linq  list  lambda 

6
ラムダ式を使用してstream()。map(…)をデバッグする方法は?
私たちのプロジェクトでは、Java 8に移行し、その新機能をテストしています。 私のプロジェクトでは、Guava述語と関数を使用してCollections2.transform、およびを使用して一部のコレクションをフィルター処理および変換していCollections2.filterます。 この移行では、たとえばguavaコードをjava 8に変更する必要があります。つまり、私が行っている変更は次のようなものです。 List&lt;Integer&gt; naturals = Lists.newArrayList(1,2,3,4,5,6,7,8,9,10,11,12,13); Function &lt;Integer, Integer&gt; duplicate = new Function&lt;Integer, Integer&gt;(){ @Override public Integer apply(Integer n) { return n * 2; } }; Collection result = Collections2.transform(naturals, duplicate); に... List&lt;Integer&gt; result2 = naturals.stream() .map(n -&gt; n * 2) .collect(Collectors.toList()); グアバを使用して、各変換プロセスをデバッグできたので、コードのデバッグは非常に快適でしたが、たとえば、デバッグ方法が心配です.map(n -&gt; n*2)。 デバッガーを使用すると、次のようなコードが表示されます。 @Hidden …
114 java  debugging  lambda  java-8 

4
イベントハンドラーのラムダ式の使用
現在、次のように宣言されているページがあります。 public partial class MyPage : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { //snip MyButton.Click += (o, i) =&gt; { //snip } } } 最近、1.1から.NET 3.5に移行したばかりなので、Page_Loadの外部でイベントハンドラーを作成することに慣れています。私の質問です。これにラムダメソッドを使用するときに注意する必要のあるパフォーマンスの欠点や落とし穴はありますか?確かに簡潔なので、私はそれを好みますが、使用するためにパフォーマンスを犠牲にしたくありません。ありがとう。
114 c#  performance  events  lambda 

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