→ NaiveRed: 你的x=1,他scope的範圍只在sub1(),sub2()裡不知道x 12/27 22:15
→ NaiveRed: 還有就是你sub2()也沒回傳東西 12/27 22:18
→ kikilalagirl: @NaiveRed,我知道沒宣告會這樣,但是JavaScript可以? 12/27 23:29
→ kikilalagirl: sub2()也沒回傳東西,想改成void sub2(),可是會錯~ 12/27 23:30
→ kikilalagirl: 所以就改成int sub2(),編譯就通過了! x改成"Hello!" 12/27 23:32
→ kikilalagirl: 只是不懂JavaScript為什麼可以跑出x=1,C++卻不行呢? 12/27 23:34
→ kikilalagirl: 把int x設定全域變數,答案就是1了~但不是我要的~ 12/27 23:41
推 LPH66: JS 的 scope 規則確實會把 sub1 的 x 帶入 sub2 12/27 23:45
→ LPH66: 因為 C++ 沒有函式內函式這東西 (lambda 是語法糖, scope 12/27 23:46
→ LPH66: 跟 JS 的 scope 是分開的), 所以並沒有直接轉成 C++ 的方法 12/27 23:47
→ LPH66: JS 在這裡還會扯到 closure 的概念, 這並不是 C++ 有的東西 12/27 23:49
→ NaiveRed: 對不起 我不會JS QQ 12/28 10:42
→ kikilalagirl: 謝謝L大大的說明 12/28 17:00
→ holydc: 但我用 c++11 寫不出 sub4... 求救 12/28 21:36
推 suhorng: 用 std::function 牙 12/28 21:42
推 holydc: 是沒錯啦,但想盡可能乾淨一些 12/28 22:10
→ suhorng: 有 capture 其他東西的話就無法,除非手動寫 struct 12/28 22:12
→ suhorng: 不然總是得把型別擦掉 12/28 22:13