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

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

2
戻り値の型を明示的に述べているにもかかわらず、ラムダの呼び出しがあいまいです
オーバーロードされた関数は、ラムダのタイプが決定可能であることを前提に、両方のファンクターを取り込む必要があります(キャスト可能(std::function私が間違っている場合は修正してください)。定義されていますか?([&]() -> Type {}) 現在のソリューションでは、参照によるキャプチャが必要なため、コードにそのロジックが含まれていることに注意してください。 次の例は、問題について説明しています。 #include <iostream> #include <string> #include <functional> void do_some(std::function<void(int)> thing) { thing(5); } void do_some(std::function<bool(int)> thing) { if (thing(10)) { std::cout << "it's true!" << std::endl; } } int main() { int local_to_be_modified = 0; do_some( [&](int in) { local_to_be_modified = in; std::cout << "This …

6
Javaで指定されたマップ値から最新の日付を見つける方法
文字列データ型として日付を付けた値で、以下の値のハッシュマップがあります。マップで使用可能なすべての日付を比較し、非常に最近の日付を持つKey-Valueを1つだけ抽出します。 キーではなく値と比較したいのですが。 以下のコードを含めました import java.util.HashMap; import java.util.Map; public class Test { public static void main(String[] args) { Map<String, String> map = new HashMap<>(); map.put("1", "1999-01-01"); map.put("2", "2013-10-11"); map.put("3", "2011-02-20"); map.put("4", "2014-09-09"); map.forEach((k, v) -> System.out.println("Key : " + k + " Value : " + v)); } } これの予想される出力は次のとおりです。 キー4値2014-09-09

3
Javaストリーム:複数の範囲でフィルター
リソースをフィルタリングし、フィールドに基づいて一部の要素を除外しようとしています。除外するには、セット(除外する必要があるIDを含む)とリスト(除外する必要があるIDの複数の範囲を含む)があります。以下のロジックを作成しましたが、2番目のフィルターロジックに満足できません。Java 8でそれを実行できるより良い方法はありますか?範囲を含める場合も同じようにする必要があります。 Set<String> extensionsToExclude = new HashSet<>(Arrays.asList("20","25","60","900")); List<String> rangesToExclude = new ArrayList<>(Arrays.asList("1-10","20-25","50-70","1000-1000000")); return directoryRecords.stream() .filter((directoryRecord) -> !extensionsToExclude.contains(directoryRecord.getExtensionNumber())) .filter((directoryRecord -> { Boolean include = true; for(String s : rangesToExclude) { String [] rangeArray = s.split("-"); Integer extension = Integer.parseInt(directoryRecord.getExtensionNumber()); if(extension <= Integer.parseInt(rangeArray[0]) && extension >= Integer.parseInt(rangeArray[1])) { include = false; } …

3
C ++ 14でのInitキャプチャによるC ++ Lambdaコードの生成
特にC ++ 14で追加された一般化されたinitキャプチャで、キャプチャがラムダに渡されるときに生成されるコードコードを理解/明確化しようとしています。 以下にリストする以下のコードサンプルを提供してください。これは、コンパイラーが生成するものについての私の現在の理解です。 ケース1:値によるキャプチャ/デフォルトによる値によるキャプチャ int x = 6; auto lambda = [x]() { std::cout << x << std::endl; }; 次と等しい: class __some_compiler_generated_name { public: __some_compiler_generated_name(int x) : __x{x}{} void operator()() const { std::cout << __x << std::endl;} private: int __x; }; そのため、複数のコピーがあります。1つはコンストラクターパラメーターにコピーし、もう1つはメンバーにコピーします。これは、ベクターなどの型にはコストがかかります。 ケース2:参照によるキャプチャ/デフォルトの参照によるキャプチャ int x = 6; auto lambda …
9 c++  lambda  c++14  move 

4
Javaでは、複数のオブジェクトにフィルターを適用する述語を作成できますか?
同じエンティティオブジェクトのリストをフィルタリングするために使用する述語があります。 Predicate<DWHDeal> companyFilter = i -> i.getCompany().equals(company); 以前のエンティティに基づいてDTOSが構築されているDTOのリストに、まったく同じフィールドにまったく同じ条件で同じフィルターを適用する必要もあります。 Predicate<DWHDealDTO> companyFilterDTO = i -> i.getCompany().equals(company); 2つの異なる述語をインスタンス化せずにこれを達成することは可能ですか?できれば1つだけで実現したいPredicateです。

4
negate()がPredicateへの明示的なキャストを必要とするのはなぜですか?
名前のリストがあります。3行目では、ラムダ式の結果をにキャストする必要がありましたPredicate<String>。私が読んでいる本は、コンパイラが一致する機能的インターフェースが何であるかを決定するのを助けるためにキャストが必要であることを説明しています。 ただし、を呼び出さないため、次の行ではそのようなキャストは必要ありませんnegate()。これはどのように違いますか?negate()ここでが返されることを理解していますPredicate<String>が、前のラムダ式は同じことをしませんか? List<String> names = new ArrayList<>(); //add various names here names.removeIf(((Predicate<String>) str -> str.length() <= 5).negate()); //cast required names.removeIf(((str -> str.length() <= 5))); //compiles without cast

2
メソッドパラメーターからのJava 8ラムダ可変変数キャプチャ?
私はjdk81212-b04、Eclipse 4.13で実行されているUbuntu LinuxでAdoptOpenJDK を使用しています。Swingにはラムダ内にラムダを作成するメソッドがあります。おそらく両方とも別々のスレッドで呼び出されます。これは次のようになります(疑似コード): private SwingAction createAction(final Data payload) { System.out.println(System.identityHashCode(payload)); return new SwingAction(() -> { System.out.println(System.identityHashCode(payload)); //do stuff //show an "are you sure?" modal dialog and get a response //show a file selection dialog //when the dialog completes, create a worker and show a status: showStatusDialogWithWorker(() -> new SwingWorker() …
8 java  lambda  closures 

2
ラムダコールはどのようにインターフェイスと相互作用しますか?
以下に示すコードスニペットは機能します。ただし、なぜ機能するのかはわかりません。ラムダ関数が情報をインターフェイスに渡す方法のロジックを完全には理解していません。 制御はどこに渡されますか?コンパイラーnは、ループ内のそれぞれとmessage作成されたものをどのように理解していますか? このコードはコンパイルされ、期待される結果が得られます。どうすればいいのか分かりません。 import java.util.ArrayList; import java.util.List; public class TesterClass { public static void main(String[] args) { List<String> names = new ArrayList<>(); names.add("Akira"); names.add("Jacky"); names.add("Sarah"); names.add("Wolf"); names.forEach((n) -> { SayHello hello = (message) -> System.out.println("Hello " + message); hello.speak(n); }); } interface SayHello { void speak(String message); } }

2
ラムダ-ClassNotFoundException
これが私のコードの外観です。問題の匿名クラスにどのように/なぜexecutorService.submit(work::get)スローするのかは不明ClassNotFoundExceptionです。常に発生するわけではありませんが、この例外が発生すると、回復しないようです。その後の要求は同じ例外で満たされます。誰かがこれを引き起こす原因を知っていますか? 編集:私は、VMセッションでこのメソッドへのすべての呼び出しが機能するか、どれも機能しないことを確認できます-上記の例外のために一部が成功する一方で他は失敗するようなものではありません。 さらに編集:https : //bugs.openjdk.java.net/browse/JDK-8148560はまさに私が経験しているバグですが、再現性がなかったか、レポーターが応答しなかったため、このバグはクローズされました。どういうわけか、ラムダ式の結果である匿名型は、エグゼキュータが式を実行する前にガベージコレクションされているように見えますが、常にそうであるとは限りません。使用中のjdkはopenjdk1.8.0_221です。 package com.ab.cde.ct.service.impl; @Service public class IngestionService { @Autowired private TransactionTemplate transactionTemplate; @Autowired private AsyncTaskExecutor executorService; @Transactional public void ingest(Data data) { Supplier<Optional<String>> work = () -> transactionTemplate.execute(s -> { // actual work on the data object, enclosed in a try/catch/finally }); executorService.submit(work::get); // this is …
8 java  spring  lambda 

4
Collectors.toMapまたはgroupingByを使用して、マップのマップ操作の結果を収集する
タイプのリストがList<A>あり、マップ操作List<B>で、1つのリストにマージされたすべてのA要素のタイプの集合リストを取得します。 List<A> listofA = [A1, A2, A3, A4, A5, ...] List<B> listofB = listofA.stream() .map(a -> repo.getListofB(a)) .flatMap(Collection::stream) .collect(Collectors.toList()); フラットマップなし List<List<B>> listOflistofB = listofA.stream() .map(a -> repo.getListofB(a)) .collect(Collectors.toList()); タイプのマップとして結果を収集したい Map<A, List<B>>と、これまでに様々にしようとCollectors.toMapか、Collectors.groupingBy望ましい結果を得ることができたオプションはありません。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.