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

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

7
การรวมสองนิพจน์ (นิพจน์ <Func <T, bool >>)
ฉันมีนิพจน์สองประเภทExpression&lt;Func&lt;T, bool&gt;&gt;และฉันต้องการนำไปใช้กับ OR และหรือไม่ใช่สิ่งเหล่านี้และรับนิพจน์ใหม่ประเภทเดียวกัน Expression&lt;Func&lt;T, bool&gt;&gt; expr1; Expression&lt;Func&lt;T, bool&gt;&gt; expr2; ... //how to do this (the code below will obviously not work) Expression&lt;Func&lt;T, bool&gt;&gt; andExpression = expr AND expr2
249 c#  linq  lambda  expression 

6
ฟังก์ชั่น (แลมบ์ดา) ปิดการจับภาพอย่างไร
เมื่อเร็ว ๆ นี้ฉันเริ่มเล่นกับ Python และฉันพบสิ่งแปลก ๆ ในวิธีการปิดการทำงาน พิจารณารหัสต่อไปนี้: adders=[0,1,2,3] for i in [0,1,2,3]: adders[i]=lambda a: i+a print adders[1](3) มันสร้างอาเรย์อย่างง่ายของฟังก์ชั่นที่รับอินพุตเดี่ยวและส่งคืนอินพุตที่เพิ่มโดยตัวเลข ฟังก์ชั่นที่มีการสร้างขึ้นในforวงที่การทำซ้ำโดยiวิ่งจากไป0 3สำหรับตัวเลขเหล่านี้แต่ละlambdaฟังก์ชั่นจะถูกสร้างขึ้นเพื่อรวบรวมiและเพิ่มเข้าไปในอินพุตของฟังก์ชัน บรรทัดสุดท้ายเรียกใช้lambdaฟังก์ชันที่สองโดย3ใช้เป็นพารามิเตอร์ 6ที่แปลกใจของการส่งออกเป็น 4ผมคาดว่า เหตุผลของฉันคือ: ใน Python ทุกอย่างเป็นวัตถุดังนั้นทุกตัวแปรจึงเป็นตัวชี้ที่สำคัญสำหรับมัน เมื่อสร้างlambdaปิดสำหรับผมคาดว่ามันเก็บชี้ไปยังวัตถุจำนวนเต็มชี้ปัจจุบันโดยi iนั่นหมายความว่าเมื่อiกำหนดวัตถุจำนวนเต็มใหม่มันจะไม่ส่งผลต่อการปิดที่สร้างไว้ก่อนหน้านี้ น่าเศร้าที่การตรวจสอบaddersอาร์เรย์ภายในโปรแกรมดีบั๊กเกอร์แสดงว่าทำเช่นนั้น ทุกlambdaฟังก์ชั่นหมายถึงค่าสุดท้ายของi, 3ซึ่งส่งผลให้กลับมาadders[1](3)6 ซึ่งทำให้ฉันสงสัยเกี่ยวกับสิ่งต่อไปนี้: สิ่งที่ปิดการจับภาพที่แน่นอน? เป็นวิธีที่สวยงามที่สุดในการโน้มน้าวให้lambdaฟังก์ชั่นในการจับมูลค่าปัจจุบันiในทางที่จะไม่ได้รับผลกระทบเมื่อiเปลี่ยนค่าของมันคืออะไร?
249 python  lambda  closures 

3
Java 8 lambdas, Function.identity () หรือ t-> t
ถ้าเป็นเช่นนั้นStack Overflow จะถูกปล่อยออกมา : Лямбдыใน Java 8, чтолучшеиспользовать - Function.identity () или t-&gt; t? ฉันมีคำถามเกี่ยวกับการใช้Function.identity()วิธีการ ลองนึกภาพโค้ดต่อไปนี้: Arrays.asList("a", "b", "c") .stream() .map(Function.identity()) // &lt;- This, .map(str -&gt; str) // &lt;- is the same as this. .collect(Collectors.toMap( Function.identity(), // &lt;-- And this, str -&gt; str)); // &lt;-- is the same as this. …

12
การใช้ Java 8 เป็นตัวเลือกกับ Stream :: flatMap
เฟรมเวิร์ก Java 8 ใหม่และเพื่อน ๆ สร้างขึ้นมาเพื่อโค้ดจาวาที่รัดกุม แต่ฉันได้เจอกับสถานการณ์ที่เรียบง่ายซึ่งดูเหมือนจะยุ่งยาก พิจารณาและวิธีการList&lt;Thing&gt; things Optional&lt;Other&gt; resolve(Thing thing)ผมต้องการที่จะทำแผนที่Thingเพื่อOptional&lt;Other&gt;s Otherและได้รับเป็นครั้งแรก วิธีแก้ปัญหาที่ชัดเจนคือการใช้things.stream().flatMap(this::resolve).findFirst()แต่flatMapต้องการให้คุณส่งกระแสข้อมูลและOptionalไม่มีstream()วิธี (หรือเป็นCollectionหรือให้วิธีการแปลงเป็นหรือดูเป็นCollection) สิ่งที่ดีที่สุดที่ฉันสามารถทำได้คือ: things.stream() .map(this::resolve) .filter(Optional::isPresent) .map(Optional::get) .findFirst(); แต่ดูเหมือนว่าจะยืดยาวไปมากสำหรับสิ่งที่ดูเหมือนว่าเป็นกรณีที่พบบ่อยมาก ใครมีความคิดที่ดีกว่า

4
Java 8 Streams: ตัวกรองหลายตัวเทียบกับเงื่อนไขที่ซับซ้อน
บางครั้งคุณต้องการกรอง a ที่Streamมีมากกว่าหนึ่งเงื่อนไข: myList.stream().filter(x -&gt; x.size() &gt; 10).filter(x -&gt; x.isCool()) ... หรือคุณสามารถทำเช่นเดียวกันกับเงื่อนไขที่ซับซ้อนและเดี่ยว filter : myList.stream().filter(x -&gt; x.size() &gt; 10 &amp;&amp; x -&gt; x.isCool()) ... ฉันเดาว่าวิธีการที่สองมีลักษณะการทำงานที่ดีขึ้น แต่ผมไม่ทราบว่ามัน วิธีแรกชนะได้ในการอ่าน แต่สิ่งที่ดีกว่าสำหรับประสิทธิภาพ?

10
ฟังก์ชั่นแลมบ์ดาสามารถ Templated ได้หรือไม่?
ใน C ++ 11 มีวิธีการสร้างฟังก์ชัน lambda หรือไม่? หรือมันเจาะจงเกินไปที่จะรับเทมเพลต? ฉันเข้าใจว่าฉันสามารถกำหนด class / functor คลาสสิกเทมเพลตแทน แต่คำถามเป็นเช่น: ภาษาอนุญาตให้ฟังก์ชัน lambda templating?
230 c++  templates  lambda  c++11 

19
กรอง Java Stream เป็น 1 และ 1 องค์ประกอบเท่านั้น
ฉันกำลังพยายามที่จะใช้ Java 8 เพื่อหาองค์ประกอบในStream LinkedListฉันต้องการรับประกันว่ามีเพียงหนึ่งเดียวที่ตรงกับเกณฑ์ตัวกรอง ใช้รหัสนี้: public static void main(String[] args) { LinkedList&lt;User&gt; users = new LinkedList&lt;&gt;(); users.add(new User(1, "User1")); users.add(new User(2, "User2")); users.add(new User(3, "User3")); User match = users.stream().filter((user) -&gt; user.getId() == 1).findAny().get(); System.out.println(match.toString()); } static class User { @Override public String toString() { return id + " - …

13
แปลงรายการวัตถุจากประเภทหนึ่งไปอีกประเภทหนึ่งโดยใช้การแสดงออกแลมบ์ดา
ฉันมีวง foreach อ่านรายการของวัตถุประเภทหนึ่งและผลิตรายการวัตถุประเภทอื่น ฉันถูกบอกว่าการแสดงออกแลมบ์ดาสามารถบรรลุผลลัพธ์เดียวกัน var origList = List&lt;OrigType&gt;(); // assume populated var targetList = List&lt;TargetType&gt;(); foreach(OrigType a in origList) { targetList.Add(new TargetType() {SomeValue = a.SomeValue}); } ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชม - ฉันยังใหม่กับแลมบ์ดาและลินุกซ์ขอบคุณ
224 c#  generics  lambda 

2
ฉันจะทำเครื่องหมาย async ของแลมบ์ดาได้ที่ไหน?
ฉันได้รับรหัสนี้: private async void ContextMenuForGroupRightTapped(object sender, RightTappedRoutedEventArgs args) { CheckBox ckbx = null; if (sender is CheckBox) { ckbx = sender as CheckBox; } if (null == ckbx) { return; } string groupName = ckbx.Content.ToString(); var contextMenu = new PopupMenu(); // Add a command to edit the current Group contextMenu.Commands.Add(new …

8
การส่งแลมบ์ดาเป็นตัวชี้ฟังก์ชัน
เป็นไปได้ไหมที่จะส่งผ่านฟังก์ชัน lambda เป็นตัวชี้ฟังก์ชัน ถ้าเป็นเช่นนั้นฉันจะต้องทำสิ่งที่ไม่ถูกต้องเพราะฉันได้รับข้อผิดพลาดในการรวบรวม ลองพิจารณาตัวอย่างต่อไปนี้ using DecisionFn = bool(*)(); class Decide { public: Decide(DecisionFn dec) : _dec{dec} {} private: DecisionFn _dec; }; int main() { int x = 5; Decide greaterThanThree{ [x](){ return x &gt; 3; } }; return 0; } เมื่อฉันพยายามรวบรวมสิ่งนี้ฉันได้รับข้อผิดพลาดในการรวบรวมดังต่อไปนี้: In function 'int main()': 17:31: error: the value …

4
วิธีการรวมรายการที่มีรายการประเภทเดียวกันเข้ากับรายการเดียว
คำถามสับสน แต่ชัดเจนกว่าที่อธิบายไว้ในรหัสต่อไปนี้: List&lt;List&lt;T&gt;&gt; listOfList; // add three lists of List&lt;T&gt; to listOfList, for example /* listOfList = new { { 1, 2, 3}, // list 1 of 1, 3, and 3 { 4, 5, 6}, // list 2 { 7, 8, 9} // list 3 }; */ List&lt;T&gt; list = …
209 c#  linq  lambda 

23
Java“ นิพจน์แลมบ์ดาไม่รองรับในระดับภาษานี้”
ฉันกำลังทดสอบคุณสมบัติใหม่ของ Java 8 และคัดลอกตัวอย่างลงใน IDE ของฉัน (Eclipse เดิมแล้ว IntelliJ) ดังที่แสดงที่นี่ Eclipse ไม่ให้การสนับสนุนใด ๆ สำหรับการแสดงออกแลมบ์ดาและ IntelliJ ยังคงรายงานข้อผิดพลาด นิพจน์แลมบ์ดาไม่รองรับในระดับภาษานี้ ฉันต้องการทราบว่านี่เป็นปัญหากับการติดตั้งรหัสหรือการสนับสนุนของฉันหรือไม่

6
ฟังก์ชั่น PHP แบบเรียกซ้ำแบบไม่ระบุชื่อ
เป็นไปได้ไหมที่มีฟังก์ชัน PHP ที่เรียกซ้ำและไม่ระบุชื่อ? นี่คือความพยายามของฉันในการทำให้มันใช้งานได้ แต่มันไม่ผ่านชื่อฟังก์ชั่น $factorial = function( $n ) use ( $factorial ) { if( $n &lt;= 1 ) return 1; return $factorial( $n - 1 ) * $n; }; print $factorial( 5 ); ฉันรู้ด้วยเช่นกันว่านี่เป็นวิธีที่ไม่ดีที่จะนำแฟคทอเรียลมาเป็นตัวอย่างเท่านั้น


6
ใน C # Monad คืออะไร
วันนี้มีการพูดคุยกันมากมายเกี่ยวกับพระ ฉันได้อ่านบทความ / บล็อกโพสต์ไม่กี่ แต่ฉันไม่สามารถไปไกลพอกับตัวอย่างของพวกเขาเข้าใจแนวคิดอย่างเต็มที่ เหตุผลก็คือ monads เป็นแนวคิดเกี่ยวกับภาษาที่ใช้งานได้และทำให้ตัวอย่างเป็นภาษาที่ฉันไม่ได้ทำงานด้วย (เนื่องจากฉันไม่ได้ใช้ภาษาเชิงหน้าที่ในเชิงลึก) ฉันไม่สามารถเข้าใจไวยากรณ์อย่างลึกซึ้งพอที่จะติดตามบทความอย่างเต็มที่ ... แต่ฉันสามารถบอกได้ว่ามีบางสิ่งที่คุ้มค่าที่จะเข้าใจ อย่างไรก็ตามฉันรู้ C # ค่อนข้างดีรวมถึงการแสดงออกแลมบ์ดาและคุณสมบัติการทำงานอื่น ๆ ฉันรู้ว่า C # มีคุณลักษณะการทำงานบางส่วนเท่านั้นดังนั้นอาจไม่สามารถแสดง monads ใน C # ได้ อย่างไรก็ตามแน่นอนว่ามันเป็นไปได้ที่จะถ่ายทอดแนวคิดนี้? อย่างน้อยฉันก็หวังเช่นนั้น บางทีคุณสามารถนำเสนอตัวอย่าง C # เป็นรากฐานแล้วอธิบายสิ่งที่นักพัฒนา C # ต้องการให้เขาทำจากที่นั่น แต่ทำไม่ได้เพราะภาษาขาดคุณสมบัติการเขียนโปรแกรมที่ใช้งานได้ มันน่าอัศจรรย์เพราะมันสื่อความตั้งใจและประโยชน์ของพระสงฆ์ ดังนั้นนี่คือคำถามของฉัน: อะไรคือคำอธิบายที่ดีที่สุดที่คุณสามารถมอบให้กับนักพัฒนา C # 3 ขอบคุณ! (แก้ไข: โดยวิธีการที่ฉันรู้ว่ามีอย่างน้อย 3 "อะไรคือ monad" คำถามอยู่แล้วดังนั้น แต่ฉันเผชิญปัญหาเดียวกันกับพวกเขา …
190 c#  c#-3.0  lambda  monads 

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