看板 Ruby 關於我們 聯絡資訊
※ 引述《godfat (godfat 真常)》之銘言: : 每個語言都會有每個語言的缺陷, : 因為永遠不會有個萬用語言可以面對所有的問題, : 除非我們有翻譯米糕!雖然那好像是蒟蒻的樣子… : anyway, 你覺得 Ruby 有什麼缺陷呢? : 不管是進化的後遺症,或是後天營養不良, : 總之有什麼地方有問題? : 我現在正在翻看這個: : http://eigenclass.org/hiki.rb?Changes+in+Ruby+1.9 ( 這網站是說 1.9 (也就是接下來的 2.0) 會做的改變 ) 不過 2.0 不知道還要多久, 好像 2003 年時就有提到 2.0 了 所以先看看就好了 :QQ 話說 Lambda Function(或說 Ruby Block, or Closure) 的問題, 其實可以看看 Common Lisp 的解法的 @_@ (let ((x (gensym))) `(lambda (,x) (+1 ,x)))) 這個類似 Ruby 的 {|x| x+ 1} 但是它表明了 x 的變數名稱是由系統所產生出一個暫用的變數名稱 所以不會和外界所影響....(gensym 表示產生暫用的變數名稱) Ruby 1.9 版的解法是這個 # {normal args; local variables} d = 2 a = lambda{|;d| d = 1} a.call() d # => 2 在 變數前加一個 ; 表示是 Block local... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.220.34.34
poga:怎麼越來越有perl的感覺. 09/01 12:44
Schelfaniel:應該不是前面加 ; 而是用 ; 區隔一般 arg 和local arg 09/01 14:08