คำถามติดแท็ก lambda

อย่าใช้บริการ AWS (ใช้ [aws-lambda] สำหรับคำถามเหล่านั้น!) Lambdas เป็นฟังก์ชั่นนิรนามหรือการปิดในภาษาโปรแกรมเช่น Lisp, C #, C ++, Lua, Python, Ruby, JavaScript หรือ Java (เช่นเดียวกันกับแลมบ์ดานิพจน์)

9
Java 8 lambda Void โต้แย้ง
สมมติว่าฉันมีส่วนต่อประสานการทำงานใน Java 8: interface Action<T, U> { U execute(T t); } และสำหรับบางกรณีฉันต้องการการดำเนินการโดยไม่มีข้อโต้แย้งหรือประเภทการคืนสินค้า ดังนั้นฉันจึงเขียนสิ่งนี้: Action<Void, Void> a = () -> { System.out.println("Do nothing!"); }; อย่างไรก็ตามมันทำให้ฉันรวบรวมข้อผิดพลาดฉันต้องเขียนมันเป็น Action<Void, Void> a = (Void v) -> { System.out.println("Do nothing!"); return null;}; ซึ่งน่าเกลียด มีวิธีกำจัดVoidพารามิเตอร์ประเภทหรือไม่
188 java  lambda  java-8  void 

9
Java SE 8 มีคู่หรือ Tuples หรือไม่
ฉันกำลังเล่นกับการทำงานที่ขี้เกียจใน Java SE 8 และฉันต้องการmapดัชนีiไปเป็นคู่ / tuple (i, value[i])จากนั้นfilterขึ้นอยู่กับvalue[i]องค์ประกอบที่สองและสุดท้ายก็ส่งออกดัชนี ฉันต้องยังคงประสบกับสิ่งนี้: อะไรคือสิ่งที่เทียบเท่าของ C ++ Pair <L, R> ใน Java? ในยุคใหม่ที่กล้าหาญของ lambdas และลำธาร? อัปเดต:ฉันนำเสนอตัวอย่างที่ค่อนข้างง่ายซึ่งมีโซลูชันที่นำเสนออย่างประณีตโดย @dkatzel ในหนึ่งในคำตอบด้านล่าง อย่างไรก็ตามมันไม่ได้พูดคุยกัน ดังนั้นให้ฉันเพิ่มตัวอย่างทั่วไปมากขึ้น: package com.example.test; import java.util.ArrayList; import java.util.stream.IntStream; public class Main { public static void main(String[] args) { boolean [][] directed_acyclic_graph = new boolean[][]{ {false, true, …


3
แลมบ์ดานิพจน์สร้างวัตถุบนฮีปทุกครั้งที่ถูกประมวลผลหรือไม่?
เมื่อฉันทำซ้ำคอลเลกชันโดยใช้น้ำตาล syntactic ใหม่ของ Java 8 เช่น myStream.forEach(item -> { // do something useful }); นี่ไม่เทียบเท่ากับตัวอย่าง 'ไวยากรณ์เก่า' ด้านล่างใช่หรือไม่ myStream.forEach(new Consumer<Item>() { @Override public void accept(Item item) { // do something useful } }); สิ่งนี้หมายความว่ามีการสร้างConsumerวัตถุนิรนามใหม่บน heap ทุกครั้งที่ทำซ้ำคอลเลกชันหรือไม่ ใช้พื้นที่ของกองมากเท่าไร ความหมายของประสิทธิภาพการทำงานมีอะไรบ้าง มันหมายความว่าฉันควรใช้รูปแบบเก่าสำหรับลูปเมื่อวนซ้ำโครงสร้างข้อมูลหลายระดับขนาดใหญ่หรือไม่?
182 java  lambda  java-8 

9
วิธีใช้แลมบ์ดาของ Java8 เพื่อจัดเรียงสตรีมในลำดับย้อนกลับ
ฉันใช้แลมบ์ดา java เพื่อเรียงลำดับรายการ ฉันจะจัดเรียงมันในทางกลับกันได้อย่างไร ฉันเห็นโพสต์นี้แต่ฉันต้องการใช้ java 8 แลมบ์ดา นี่คือรหัสของฉัน (ฉันใช้ * -1) เป็นแฮ็ค Arrays.asList(files).stream() .filter(file -> isNameLikeBaseLine(file, baseLineFile.getName())) .sorted(new Comparator<File>() { public int compare(File o1, File o2) { int answer; if (o1.lastModified() == o2.lastModified()) { answer = 0; } else if (o1.lastModified() > o2.lastModified()) { answer = 1; } else …

6
ฟังก์ชั่นหลามสูงสุดโดยใช้ 'สำคัญ' และการแสดงออกแลมบ์ดา
ฉันมาจากพื้นหลังของ OOP และพยายามเรียนรู้หลาม ฉันใช้maxฟังก์ชั่นที่ใช้การแสดงออกแลมบ์ดาจะกลับมาเช่นชนิดที่Playerมีสูงสุดในหมู่รายการtotalScoreplayers def winner(): w = max(players, key=lambda p: p.totalScore) ฟังก์ชั่นได้อย่างถูกต้องส่งกลับตัวอย่างของประเภทมีสูงสุดPlayer totalScoreฉันสับสนเกี่ยวกับสามสิ่งต่อไปนี้: วิธีการที่ไม่maxทำงานฟังก์ชั่น? อะไรคือข้อโต้แย้งที่กำลังเกิดขึ้น? ฉันดูเอกสาร แต่ไม่เข้าใจ คำหลักที่ใช้keyในฟังก์ชั่นสูงสุดคืออะไร? ฉันรู้ว่ามันใช้ในบริบทของsortฟังก์ชั่น ความหมายของการแสดงออกแลมบ์ดา? อ่านอย่างไร พวกเขาทำงานอย่างไร ทั้งหมดนี้เป็นคำถามเชิงแนวคิดที่ไม่มีเสียงรบกวนมาก แต่จะช่วยให้ฉันเข้าใจภาษา มันจะช่วยถ้าคุณสามารถยกตัวอย่างเพื่ออธิบาย ขอบคุณ
181 python  function  lambda 

3
วิธีการจัดเรียง lambda ใน Python
ใน Python ฉันพยายามเรียงลำดับวันที่ด้วยแลมบ์ดา ฉันไม่เข้าใจข้อความแสดงข้อผิดพลาด ข้อความคือ: <lambda>() takes exactly 1 argument (2 given) บรรทัดที่ฉันมีคือ a = sorted(a, lambda x: x.modified, reverse=True)
179 python  lambda 

4
ฟังก์ชั่นท้องถิ่นกับแลมบ์ดา C # 7.0
ฉันกำลังดูการใช้งานใหม่ในC # 7.0และฉันคิดว่ามันน่าสนใจที่พวกเขาได้ใช้ฟังก์ชั่นในท้องถิ่น แต่ฉันไม่สามารถจินตนาการถึงสถานการณ์ที่ฟังก์ชั่นในท้องถิ่นจะได้รับความนิยมมากกว่าการแสดงออกแลมบ์ดา ฉันเข้าใจว่า lambdas เป็นanonymousฟังก์ชั่นในขณะที่ฟังก์ชั่นในท้องถิ่นไม่ได้ แต่ฉันไม่สามารถเข้าใจสถานการณ์โลกแห่งความเป็นจริงได้ซึ่งฟังก์ชั่นในท้องถิ่นมีข้อได้เปรียบมากกว่าการแสดงออกแลมบ์ดา ตัวอย่างใด ๆ จะได้รับการชื่นชมมาก ขอบคุณ
178 c#  function  lambda  c#-7.0 

11
ค่าส่งคืนสูงสุดหากแบบสอบถามว่างเปล่า
ฉันมีคำถามนี้: int maxShoeSize = Workers .Where(x => x.CompanyId == 8) .Max(x => x.ShoeSize); จะเกิดอะไรขึ้นmaxShoeSizeถ้า บริษัท 8 ไม่มีพนักงานเลย? อัปเดต: ฉันจะเปลี่ยนคิวรีได้อย่างไรเพื่อให้ได้ 0 และไม่ใช่ข้อยกเว้น

5
ไม่สามารถใช้พารามิเตอร์ ref หรือ out ในการแสดงออกแลมบ์ดา
ทำไมคุณไม่สามารถใช้พารามิเตอร์ ref หรือ out ในนิพจน์แลมบ์ดา ฉันเจอข้อผิดพลาดในวันนี้และพบวิธีแก้ปัญหา แต่ฉันก็ยังสงสัยว่าทำไมนี่เป็นข้อผิดพลาดแบบรวบรวมเวลา CS1628 : ไม่สามารถใช้ในพารามิเตอร์ ref หรือ out 'พารามิเตอร์' ภายในวิธีที่ไม่ระบุชื่อนิพจน์แลมบ์ดาหรือนิพจน์แบบสอบถาม นี่คือตัวอย่างง่ายๆ: private void Foo() { int value; Bar(out value); } private void Bar(out int value) { value = 3; int[] array = { 1, 2, 3, 4, 5 }; int newValue = array.Where(a => a …
173 c#  lambda 

7
จะแปลงสตริงเป็น LINQ Expression Tree ได้อย่างไร
นี่เป็นเวอร์ชันดั้งเดิมของปัญหาดั้งเดิม ฉันมีชั้นเรียนที่เรียกว่าบุคคล: public class Person { public string Name { get; set; } public int Age { get; set; } public int Weight { get; set; } public DateTime FavouriteDay { get; set; } } ... และให้พูดตัวอย่าง: var bob = new Person { Name = "Bob", Age = 30, Weight …
173 c#  lambda  antlr  dsl  predicate 

2
ทำไมคอมไพเลอร์สามารถปรับแต่งแลมบ์ดาได้ดีกว่าฟังก์ชั่นธรรมดา?
ในหนังสือของเขาThe C++ Standard Library (Second Edition)Nicolai Josuttis ระบุว่า lambdas สามารถปรับให้เหมาะสมโดยคอมไพเลอร์มากกว่าฟังก์ชั่นธรรมดา นอกจากนี้คอมไพเลอร์ C ++ เพิ่มประสิทธิภาพ lambdas ได้ดีกว่าฟังก์ชั่นทั่วไป (หน้า 213) ทำไมถึงเป็นอย่างนั้น? ฉันคิดว่าเมื่อพูดถึงการอินไลน์ก็ไม่น่าจะมีความแตกต่างอีกต่อไป เหตุผลเดียวที่ฉันคิดได้ก็คือคอมไพเลอร์อาจมีบริบทท้องถิ่นที่ดีขึ้นกับลูกแกะและสิ่งเหล่านี้สามารถทำให้สมมติฐานมากขึ้นและดำเนินการเพิ่มประสิทธิภาพมากขึ้น

15
Java 8: Lambda-Streams, กรองตามวิธีการยกเว้น
ฉันมีปัญหาในการทดลองใช้แลมบ์ดานิพจน์ของ Java 8 โดยปกติแล้วจะใช้งานได้ดี แต่ตอนนี้ฉันมีวิธีการที่ใช้IOExceptionแล้ว เป็นการดีที่สุดถ้าคุณดูรหัสต่อไปนี้: class Bank{ .... public Set<String> getActiveAccountNumbers() throws IOException { Stream<Account> s = accounts.values().stream(); s = s.filter(a -> a.isActive()); Stream<String> ss = s.map(a -> a.getNumber()); return ss.collect(Collectors.toSet()); } .... } interface Account{ .... boolean isActive() throws IOException; String getNumber() throws IOException; .... } ปัญหาคือมันไม่ได้รวบรวมเพราะฉันต้องจับข้อยกเว้นที่เป็นไปได้ของ isActive- …

5
LINQ:“ มี” และแบบสอบถามแลมบ์ดา
ฉันมีที่เรียกว่าList<BuildingStatus> buildingStatusฉันต้องการตรวจสอบว่ามีสถานะที่รหัสถ่าน (คืนโดยGetCharCode()) เท่ากับตัวแปรบางอย่างหรือv.Statusไม่ มีวิธีในการทำเช่นนี้ตามบรรทัดของรหัส (ไม่รวบรวม) ด้านล่าง? buildingStatus.Contains(item => item.GetCharValue() == v.Status)
168 c#  .net  list  linq  lambda 

8
แลมบ์ดาจับภาพอ้างอิง const
มันเป็นไปได้ที่จะจับโดยอ้างอิง const ในการแสดงออกแลมบ์ดา? ฉันต้องการให้การบ้านที่ระบุไว้ด้านล่างล้มเหลวตัวอย่างเช่น: #include <cstdlib> #include <vector> #include <string> #include <algorithm> using namespace std; int main() { string strings[] = { "hello", "world" }; static const size_t num_strings = sizeof(strings)/sizeof(strings[0]); string best_string = "foo"; for_each( &strings[0], &strings[num_strings], [&best_string](const string& s) { best_string = s; // this should fail } …
166 c++  c++11  lambda  c++14 

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.