论坛首页 Ruby版 ruby

Ruby'陷阱'之: '||=' 的真正展开式

浏览 3522 次
精华帖 (0) :: 良好帖 (8) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
最后更新时间:2008-06-30
引用

但是David后来认为"a || a = b"应该更恰当些.


楼主是咬字头咬过头了,在一个极端的情况下(即a没有定义)写了一段代码然后造成了一些混乱,你又怎知david没有个潜台词是a has defined呢?

不过举的那个hash有默认值的||=这个问题是应该提起注意。
   
0 请登录后投票
最后更新时间:2008-07-04
回复不见了?
ruby按我说就是不断句的之乎者也,陷阱多多,没多少前途。最终还是死在这个陷阱上。
ruby的兴起完全是因为ror,离开ror,ruby啥都不是。
还是看好groovy,同为动态语言,却严谨的多。不必咬文嚼字玩文字游戏。
   
0 请登录后投票
最后更新时间:2008-07-04
geszJava 写道
回复不见了?
ruby按我说就是不断句的之乎者也,陷阱多多,没多少前途。最终还是死在这个陷阱上。
ruby的兴起完全是因为ror,离开ror,ruby啥都不是。
还是看好groovy,同为动态语言,却严谨的多。不必咬文嚼字玩文字游戏。


希望楼上能把“陷阱多多”一一列举而出,好有益于用ruby干活的劳苦大众。
   
0 请登录后投票
最后更新时间:2008-07-04
我之所以在这里“咬文嚼字”,是为了追求对语言的精确理解。

对于象ruby这种特性丰富的语言,没有象JavaScript那样有一个定义严谨的规范来作参考,只能靠“咬文嚼字”了。

说“离开ror,ruby啥都不是“这个严重不同意. 单独来看ruby本身就是一门非常优秀的脚本语言,就“陷阱”而言并不比C++多,语言的表达能力并不在Perl之下而可读性非常之高,唯一缺憾是速度较慢,但对于脚本语言来说这个问题并不显著。

我开始用ruby的时候,根本就不知道什么是rails.
   
0 请登录后投票
最后更新时间:2008-07-10
说实话,看完觉得有点没事找事来说的感觉。
参考一些开源的rails代码,经常可以看到
@page = param[:page]
@page ||= 1
这样的代码,就是处理分页参数的。如果没有传page,就把@page设为1.
本身意思就很明瞭。
不过也有收获,代码还是写得简单清晰一点好。楼主分析辛苦了。
   
0 请登录后投票
最后更新时间:2008-07-10
这Spec简单了点,对讨论的问题没有帮助:
http://github.com/rubyspec/rubyspec/tree/master/1.8/language/or_spec.rb
   
0 请登录后投票
最后更新时间:2008-07-21
所以, "a ||= b"的正确展开式应该为: "if a then a else a = b end"


想不到吧?

楼主还是学学基本知识吧, 这是想当然的东西, 还想不到?
   
0 请登录后投票
最后更新时间:2008-07-21
>> h = Hash.new(1)
=> {}
>> h[:x]
=> 1
>> h[:x] ||= 2
=> 1
>> h
=> {}

陷进 ?
h[:x] 是未定义的,
a ||= b 相当于  a = b ||  a
这里因为你给Hash加了默认值,所以当然会输出1了。 看看下面的代码:
>> h = Hash.new
=> {}
>> h[:x] ||= 2
=> 2


>> h[:x] = h[:x] || 2
=> 1
>> h
=> {:x=>1}
>>
你上面这相当于给hash赋值了key-value对。


真不知道你说了写什么,把Hash搞明白再来吧。
   
0 请登录后投票
最后更新时间:2008-07-21
blackanger 写道

真不知道你说了写什么,把Hash搞明白再来吧。

before catching what they are talking about, why did you demand others " 把Hash搞明白再来吧"?
plz read CAREFULLY before speak like this.
   
0 请登录后投票
最后更新时间:2008-07-21
to blackanger:

请看清楚标题,以及仔细阅读所有帖子再发表意见吧,否则就会和我犯下同样的错误。

这里讨论的是a ||= b的generic展开式,这个展开式不应该因a,b为特殊情况而有所区别,即语义的严格定义。

我想此贴的结论已经很明确了,如果对归纳的最终展开式还有什么异议,欢迎发表高见。

另外,对别人的知识妄下论断不会对让你显得更权威有什么帮助;同样,嵌入签名图片里的“资深会员”字样也不会。
   
0 请登录后投票
论坛首页 Ruby版 ruby

跳转论坛:
JavaEye推荐