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

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

2
ทำไมเราถึงต้องการเส้นใย
สำหรับ Fibers เรามีตัวอย่างคลาสสิก: การสร้างตัวเลข Fibonacci fib = Fiber.new do x, y = 0, 1 loop do Fiber.yield y x,y = y,x+y end end ทำไมเราถึงต้องการเส้นใยที่นี่? ฉันสามารถเขียนสิ่งนี้ใหม่ได้ด้วย Proc เดียวกัน (จริงๆแล้วการปิด) def clsr x, y = 0, 1 Proc.new do x, y = y, x + y x end end ดังนั้น 10.times { …
101 ruby  lambda  closures  fibers  proc 

9
การตรวจสอบค่าว่างหลายรายการใน Java 8
ฉันมีรหัสด้านล่างซึ่งค่อนข้างน่าเกลียดสำหรับการตรวจสอบค่าว่างหลายรายการ String s = null; if (str1 != null) { s = str1; } else if (str2 != null) { s = str2; } else if (str3 != null) { s = str3; } else { s = str4; } ดังนั้นฉันจึงลองใช้Optional.ofNullablelike ด้านล่าง แต่ก็ยังยากที่จะเข้าใจหากมีคนอ่านรหัสของฉัน วิธีที่ดีที่สุดในการทำเช่นนั้นใน Java 8 คืออะไร String s = …

5
การใช้ Optional.ifPresent () อย่างเหมาะสม
ฉันพยายามเข้าใจifPresent()วิธีการของOptionalAPI ใน Java 8 ฉันมีตรรกะง่ายๆ: Optional<User> 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<User>() { @Override public void accept(User user) { doSomethingWithUser(user.get()); } }); รหัสเริ่มสกปรกขึ้นซึ่งทำให้ฉันคิดว่าจะกลับไปใช้nullเช็คแบบเก่า ความคิดใด ๆ ?
99 java  lambda  java-8  optional 

2
การใช้งานแลมด้า C ++ 11 และโมเดลหน่วยความจำ
ฉันต้องการข้อมูลเกี่ยวกับวิธีการคิดอย่างถูกต้องเกี่ยวกับการปิด C ++ 11 และstd::functionในแง่ของวิธีการใช้งานและวิธีจัดการหน่วยความจำ แม้ว่าฉันจะไม่เชื่อในการเพิ่มประสิทธิภาพก่อนกำหนด แต่ฉันก็มีนิสัยในการพิจารณาผลกระทบด้านประสิทธิภาพของตัวเลือกของฉันอย่างรอบคอบในขณะที่เขียนโค้ดใหม่ ฉันยังเขียนโปรแกรมแบบเรียลไทม์ในปริมาณพอสมควรเช่นในไมโครคอนโทรลเลอร์และสำหรับระบบเสียงซึ่งต้องหลีกเลี่ยงการจัดสรรหน่วยความจำแบบไม่กำหนด / การหยุดการจัดสรร ดังนั้นฉันจึงต้องการพัฒนาความเข้าใจให้ดีขึ้นว่าเมื่อใดควรใช้หรือไม่ใช้ C ++ lambdas ความเข้าใจปัจจุบันของฉันคือแลมด้าที่ไม่มีการปิดจับนั้นเหมือนกับการเรียกกลับ C อย่างไรก็ตามเมื่อสภาพแวดล้อมถูกจับด้วยค่าหรือโดยการอ้างอิงอ็อบเจ็กต์ที่ไม่ระบุชื่อจะถูกสร้างขึ้นบนสแต็ก std::functionเมื่อมูลค่าปิดต้องถูกส่งกลับจากฟังก์ชั่นหนึ่งใน wraps จะเกิดอะไรขึ้นกับหน่วยความจำการปิดในกรณีนี้? คัดลอกจากสแต็กไปยังฮีปหรือไม่ เป็นอิสระเมื่อใดก็ตามที่std::functionเป็นอิสระกล่าวคือมีการนับการอ้างอิงเหมือน a std::shared_ptrหรือไม่? ฉันคิดว่าในระบบเวลาจริงฉันสามารถตั้งค่าฟังก์ชั่นห่วงโซ่ของแลมบ์ดาผ่าน B เป็นอาร์กิวเมนต์ต่อเนื่องไปเพื่อให้ท่อการประมวลผลA->Bจะถูกสร้างขึ้น ในกรณีนี้การปิด A และ B จะถูกจัดสรรครั้งเดียว แม้ว่าฉันไม่แน่ใจว่าสิ่งเหล่านี้จะถูกจัดสรรบนสแต็กหรือฮีป อย่างไรก็ตามโดยทั่วไปดูเหมือนว่าปลอดภัยที่จะใช้ในระบบเรียลไทม์ ในทางกลับกันถ้า B สร้างฟังก์ชันแลมบ์ดาบางฟังก์ชัน C ซึ่งส่งคืนหน่วยความจำสำหรับ C จะได้รับการจัดสรรและจัดสรรซ้ำ ๆ ซึ่งจะไม่เป็นที่ยอมรับสำหรับการใช้งานแบบเรียลไทม์ ในรหัสหลอกคือ DSP loop ซึ่งฉันคิดว่าจะปลอดภัยแบบเรียลไทม์ ฉันต้องการประมวลผลบล็อก A และ …
97 c++  memory  lambda  c++11 

10
การตัดเวลา StopWatch ด้วยผู้รับมอบสิทธิ์หรือแลมบ์ดา?
ฉันกำลังเขียนโค้ดแบบนี้โดยใช้เวลาที่รวดเร็วและสกปรกเล็กน้อย: var sw = new Stopwatch(); sw.Start(); for (int i = 0; i < 1000; i++) { b = DoStuff(s); } sw.Stop(); Console.WriteLine(sw.ElapsedMilliseconds); แน่นอนว่ามีวิธีที่จะเรียกรหัสเวลานี้ว่าแฟนซี - schmancy .NET 3.0 lambda แทนที่จะตัดและวาง (พระเจ้าห้าม) สองสามครั้งและแทนที่DoStuff(s)ด้วยDoSomethingElse(s)? ฉันรู้ว่ามันสามารถทำได้Delegateแต่ฉันสงสัยเกี่ยวกับวิธีแลมด้า
97 c#  .net  delegates  lambda 

9
Visual Studio ดีบักเครื่องมือ "นาฬิกาด่วน" และนิพจน์แลมบ์ดา
เหตุใดฉันจึงไม่สามารถใช้นิพจน์แลมบ์ดาในขณะที่แก้ไขข้อบกพร่องในหน้าต่าง "นาฬิกาด่วน" ได้ UPD: ดูเพิ่มเติม http://blogs.msdn.com/b/jaredpar/archive/2009/08/26/why-no-linq-in-debugger-windows.aspx http://blogs.msdn.com/b/jaredpar/archive/2010/06/02/why-is-linq-absent-from-debugger-windows-part-2.aspx

5
วิธีการแปลงสตริงทั้งหมดในรายการ <string> เป็นตัวพิมพ์เล็กโดยใช้ LINQ
เมื่อวานนี้ฉันเห็นข้อมูลโค้ดในการตอบกลับรายการหนึ่งใน StackOverflow ที่ทำให้ฉันรู้สึกทึ่ง มันเป็นแบบนี้: List&lt;string&gt; myList = new List&lt;string&gt; {"aBc", "HELLO", "GoodBye"}; myList.ForEach(d=&gt;d.ToLower()); ฉันหวังว่าฉันจะใช้มันเพื่อแปลงรายการทั้งหมดใน myList เป็นตัวพิมพ์เล็ก อย่างไรก็ตามมันไม่เกิดขึ้น ... หลังจากรันสิ่งนี้ปลอกใน myList จะไม่เปลี่ยนแปลง ดังนั้นคำถามของฉันคือมีวิธีหรือไม่โดยใช้นิพจน์ LINQ และ Lambda เพื่อวนซ้ำและแก้ไขเนื้อหาของรายการในลักษณะที่คล้ายกันนี้ ขอบคุณ Max
95 c#  linq  lambda  foreach 

4
จะสร้างอินสแตนซ์ของอินเทอร์เฟซที่ไม่ระบุชื่อใน Kotlin ได้อย่างไร?
ฉันมีไลบรารี Java ของบุคคลที่สามซึ่งอ็อบเจ็กต์ที่มีอินเทอร์เฟซเช่นนี้: public interface Handler&lt;C&gt; { void call(C context) throws Exception; } ฉันจะใช้มันอย่างกระชับใน Kotlin คล้ายกับ Java anonymous class เช่นนี้ได้อย่างไร: Handler&lt;MyContext&gt; handler = new Handler&lt;MyContext&gt; { @Override public void call(MyContext context) throws Exception { System.out.println("Hello world"); } } handler.call(myContext) // Prints "Hello world"

1
การแก้ปัญหาโอเวอร์โหลดที่คลุมเครือบนตัวชี้ฟังก์ชันและฟังก์ชัน std :: สำหรับแลมบ์ดาโดยใช้ +
ในรหัสต่อไปนี้การเรียกครั้งแรกถึงfooไม่ชัดเจนดังนั้นจึงไม่สามารถรวบรวมได้ ประการที่สองด้วยการเพิ่ม+ก่อนแลมบ์ดาจะแก้ไขการโอเวอร์โหลดของตัวชี้ฟังก์ชัน #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 ++
ฉันอยากรู้ว่าอะไร[=]? นี่คือตัวอย่างสั้น ๆ 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?
95 c++  c++11  lambda 

8
แลมด้า C ++ พร้อมแคปเจอร์เป็นตัวชี้ฟังก์ชัน
ฉันกำลังเล่นกับ C ++ lambdas และการแปลงโดยนัยเป็นฟังก์ชันพอยน์เตอร์ ตัวอย่างเริ่มต้นของฉันใช้เป็นคำเรียกกลับสำหรับฟังก์ชัน 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; } …

3
_ (ขีดล่าง) เป็นคำหลักที่สงวนไว้
ฉันเพิ่งแทนที่sนิพจน์แลมบ์ดาต่อไปนี้โดย_: s -&gt; Integer.parseInt(s) คอมไพเลอร์ Eclipse พูดว่า: ไม่ควรใช้ '_' เป็นตัวระบุเนื่องจากเป็นคำหลักที่สงวนไว้ตั้งแต่ระดับแหล่งที่มา 1.8 ฉันไม่พบคำอธิบายใด ๆ ในโครงสร้างศัพท์ / คำหลักJLS §3.9
94 java  lambda  java-8 

3
Explicit Return Type ของ Lambda
เมื่อฉันพยายามรวบรวมรหัสนี้ (VS2010) ฉันได้รับข้อผิดพลาดต่อไปนี้: error C3499: a lambda that has been specified to have a void return type cannot return a value void DataFile::removeComments() { string::const_iterator start, end; boost::regex expression("^\\s?#"); boost::match_results&lt;std::string::const_iterator&gt; what; boost::match_flag_type flags = boost::match_default; // Look for lines that either start with a hash (#) // or have nothing …

1
คำเตือน Cell-var-from-loop จาก Pylint
สำหรับรหัสต่อไปนี้: 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 

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