1 johnnyb OP |
2 johnnyb OP |
3 johnnyb OP 坑爹,我已经忘了怎么贴 gist 了 |
![]() | 4 dorentus 2014-05-05 15:09:58 +08:00 |
![]() | 5 dorentus 2014-05-05 15:20:00 +08:00 ![]() block 的话,要不就这么直接用 block: func { ... } 或者 func do ... end 要不就是这样用一个 proc: func(&proc) 最后的那个 foo() &lambda {},其实我也不是很明白,但是可以确定的是传入 foo 的参数是 0 个,后面那个 proc 没起啥作用…… |
![]() | 6 KDr2 2014-05-05 16:19:39 +08:00 ![]() 难道不是 (foo()) & (lambda {}) :D |
![]() | 9 KDr2 2014-05-05 22:03:39 +08:00 ![]() @johnnyb 嗯,就是看 Parser 怎么 parse 的吧, 对 foo() &lambda {} 来说 foo() 后面没有 "{" 和 "do"已经是个完整的 function-call, lambda {} 也是合法 expression,两者 & 起来也是合法的 expression。 对 foo &lambda {} 来说 foo 可能不是一个完整的function-call, 还要继续看后面有没有参数,然后发现&开头的block |
![]() | 10 orzfly 2014-05-05 22:45:56 +08:00 |
![]() | 11 orzfly 2014-05-05 22:47:47 +08:00 ![]() |
![]() | 13 tangzx 2014-05-06 10:27:24 +08:00 via iPhone & 加在 block 名前,便只能写进括号里(和实参一样) |