作者Schelfaniel (Test)
看板Ruby
标题Re: [Ruby] 语言缺陷
时间Fri Sep 1 11:24:58 2006
※ 引述《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
1F:→ poga:怎麽越来越有perl的感觉. 09/01 12:44
2F:→ Schelfaniel:应该不是前面加 ; 而是用 ; 区隔一般 arg 和local arg 09/01 14:08