推 TitanEric: lambda 07/26 11:04
→ TitanEric: 咦 有點不太一樣 07/26 11:04
→ loveme00835: [](){} 是 lambda expr, 它的功用就是建立 closure 07/26 11:08
→ loveme00835: 物件, 在 lambda expr 後面直接加上 () 是針對這個 07/26 11:09
→ loveme00835: function object 直接呼叫, 所以整個敘述的型別取決 07/26 11:10
→ loveme00835: 於 lambda expr 裡的 return statement, 這個常被用 07/26 11:10
→ loveme00835: 於物件的初始化, 某些物件必須要在建構的時候就完全 07/26 11:11
→ loveme00835: 給足參數, 沒辦法先用 default ctor 建構之後才用 07/26 11:11
→ uranusjr: 一個什麼都不做的 lambda 建立後馬上被呼叫 07/26 11:11
→ loveme00835: init() 之類的成員去預備好物件狀態, 所以常會在這個 07/26 11:12
→ loveme00835: lambda expr 裡做好需要的判斷, 所以你會經常看到 if 07/26 11:13
→ loveme00835: /switch 語句在裡頭, 通常回傳的物件會是 movable, 07/26 11:18
→ loveme00835: 這時候的 closure 起到的就是 inline factory method 07/26 11:18
→ loveme00835: 的角色 07/26 11:18
推 Dracarys: 如果你有個object的初始化邏輯很複雜就可以包在裡面, 07/26 20:40
→ Dracarys: 這樣不僅限制了初始化中間產物的scope,你也可以把被初 07/26 20:40
→ Dracarys: 始化的對象宣告為const(適用的話)。 07/26 20:40
→ Dracarys: BS的書有講到 07/26 20:41
推 lovejomi: Immediately invoked function expression 07/28 20:07
→ lovejomi: Immediately invoked function expression 07/28 20:07
→ james732: 請問Dracarys提到的書是哪一本呢? 07/28 20:22
推 Dracarys: A tour of C++ 第二版 6.3.3 07/28 21:54
推 james732: 謝謝回答!! 07/28 21:58
推 Killercat: 這我還真的想不太到use case.... 07/29 08:34
→ wawi2: 謝謝大家的回答 了解了 另外給一個例子(從lovejomi來的) 07/29 09:59
→ wawi2: shorturl.at/oMRV2 07/29 10:00