看板 C_and_CPP 關於我們 聯絡資訊
最近在看Lambda 有一部份看了很久還是不懂,不知道是他寫太簡捷還是我哪個點沒有抓到 http://msdn.microsoft.com/en-us/library/dd293599.aspx 文件在上面 在higher order function的部份 auto g = [](int x) -> function<int (int)> { return [=](int y) { return x + y; }; }; 首先就是上面這邊,不懂為什麼要將int x轉成 function type 這樣做的用意到底在哪? 接著 auto h = [](const function<int (int)>& f, int z) { return f(z) + 1; }; 之後 h(g(7),8) output 會是16 麻煩大大幫解惑一下 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.32.95.34
littleshan:推文空間太小了實在很難說明這個的妙用 07/12 02:43
littleshan:還是交給專業的Favonia來說明吧 (誤 07/12 02:43
loveme00835:g 是想達成 bind1st() 的效果, 你想打的應該是 ',' 吧 07/12 02:49
提醒感謝,我的問題主要是在 g 的地方,就是將ouput type 轉成 function< >後 他要如何去接住 int x的值呢? 我剛有試了一下 假設將程式改成 function< int (int , int) > 那前面的 int x 要如何修改才能正確接住值呢? 就是 h(g(7,8),9) or h(g(7),8,9) 這樣?? 這部分我真的不太了解 謝謝
loveme00835:第二個應該不難理解, compose而已 07/12 02:52
firose:g 是接受兩個整數的函式,只是可以分次 apply 07/12 07:13
firose:好像叫作 curried function 07/12 07:16
diabloevagto:lambda真的很玄妙,研究不太出奧妙。 07/12 08:11
hilorrk:其實不是很懂問題在哪- -||| 07/12 08:23
adxis:g 是一個會傳回函式的函式,h 是會接收一個函式與int的函式 07/12 09:10
adxis:loveme00835 指的 ',' 是 h(g(7), 8) 07/12 09:12
※ 編輯: gogoqaz 來自: 118.163.84.235 (07/12 12:43)
littleshan:看不懂你的問題 07/12 13:53
Yshuan:感覺是 c++的語法複雜化了 ... 07/12 13:55
legendmtg:看不懂你在問什麼.... 07/12 14:29
legendmtg:你去改g的return type跟前面g的參數(int x)有什麼關係.. 07/12 14:31
Favonia:... 其實在 C++ 的世界裡面可能說 closure 比較精準... 07/12 18:47
Favonia:不過這裡不太重要 xD 07/12 19:01