- 浏览: 204558 次
- 性别:
- 来自: Wgt
最新评论
-
pxiaozei:
楼主,你这样用,需要在SVN服务器上建Git服务器端么?
SVN+GIT=鱼与熊掌兼得 -
southwolf:
这个项目还在维护吗……
OpenCV+Ruby构建图像处理研究平台 -
w87848608:
请问,比如我利用git,开了一个branch A,做了功能A, ...
SVN+GIT=鱼与熊掌兼得 -
sxlkk:
callmechen 写道本质上还是没有解决合并的繁琐。换汤不 ...
SVN+GIT=鱼与熊掌兼得 -
清气上升:
本地提交,本地错误恢复,eclipse有local histo ...
SVN+GIT=鱼与熊掌兼得
前一段时间,我在这里http://rubynroll.iteye.com/blog/192547展示了一个空格带来的'陷阱', 今天又见到另一个'陷阱'(http://dablog.rubypal.com/2008/3/25/a-short-circuit-edge-case by David).
之所以为陷阱加引号, 是因为大部分情况下我们都没有机会掉进去
大多数Ruby教科书在解释 "a ||= b" 这个复合操作时,都说她等效于: "a = a || b", 实际上真的如此么?
让我们在irb里面来看看:
David提到,Matz在RubyConf 2007上的解释是"a ||= b"真实的等价应该是: "a or a = b", 但是David后来认为"a || a = b"应该更恰当些.
果真的如此么? 不!
一个简单的例子可以反驳, 如果a未定义,则:
所以, 看来"a ||= b"正确的展开应该是: "a = b unless a"
对了么? 还是不对!
"a ||= b"表达式最终返回的是a, 而"a = b unless a"在a非真时返回nil.
所以, "a ||= b"的正确展开式应该为: "if a then a else a = b end"
想不到吧?
=== 补充 ===
鉴于此帖较长,且中间夹杂着不少因我的疏忽和错误造成的无谓争论,因此把最终的到的结论列在这里,免得看起来太累,或者有些人没有耐心看完而增加更多的无谓的争论。
结论如下:
1) a ||= b 不等效于: a = a || b
2) 归纳起来,准确的展开式应该是:
if defined?(a) then (a || a = b) else a = b end
特别感谢lllyq, 这个结论的credit应归于他/她。
若大家发现有更好的展开形式,欢迎讨论。
真不知道你说了写什么,把Hash搞明白再来吧。
before catching what they are talking about, why did you demand others " 把Hash搞明白再来吧"?
plz read CAREFULLY before speak like this.
希望楼上能把“陷阱多多”一一列举而出,好有益于用ruby干活的劳苦大众。
但是David后来认为"a || a = b"应该更恰当些.
楼主是咬字头咬过头了,在一个极端的情况下(即a没有定义)写了一段代码然后造成了一些混乱,你又怎知david没有个潜台词是a has defined呢?
不过举的那个hash有默认值的||=这个问题是应该提起注意。
效果不一样, 至少在版本是1.8.6. 1.8.7上是不一样的, 后者会raise undefined error.
根据你的回复我估计你还是没去试,显然,无论在1.8.6, 1.8.7,后者都会raise undefined error. 前者你试过了么?试过后你就知道为什么我会回第一个帖了\
我说的更清楚一点就是你测试下来两者行为不一样,那是因为你的测试方法不对,你没有每次都新开irb来测试,所以测试方法不对你看到的结果就不对,得出的结论也就不对了
哈哈我真是搞糊涂了,我试的是a ||= 2和a || a = 2, 比较的太多了,连自己都弄糊涂了, 看来此贴应该归新手贴才对:(
至于结论, 你认为 a ||= b最终展开为 if defined?(a) then (a || a = b) else a = b end 还有问题么?
效果不一样, 至少在版本是1.8.6. 1.8.7上是不一样的, 后者会raise undefined error.
根据你的回复我估计你还是没去试,显然,无论在1.8.6, 1.8.7,后者都会raise undefined error. 前者你试过了么?试过后你就知道为什么我会回第一个帖了\
我说的更清楚一点就是你测试下来两者行为不一样,那是因为你的测试方法不对,你没有每次都新开irb来测试,所以测试方法不对你看到的结果就不对,得出的结论也就不对了
效果不一样, 至少在版本是1.8.6. 1.8.7上是不一样的, 后者会raise undefined error.
非要用一个准确的展开式下面这个应该可以
if defined?(a) then (a || a = b) else a = nil end
这就是我所想要的讨论的,一个准确的展开式.
但是这个式子还是有问题, 应该是这样才对:
if defined?(a) then (a || a = b) else a = b end
所以结论是不是这样:
1) a ||= b 不等效于: a = a || b
2) 在a已经定义过时, a ||= b等效于a || a = b
3) 在a未定义时, a ||= b等效于a = b
所以归纳起来,准确的展开式应该是:
if defined?(a) then (a || a = b) else a = b end
意见??
我举的那个例子就是为了反驳
同意楼上,感觉应该相当于
a = nil
a || a = b
caryl说的"楼上"就是
另外, h[:x] ||= 2 相当于h[:x] || h[:x] = 2在这里之所以成立,是因为h这个Hash是已经定义过了. 对于一个通用的 a ||= b, 并不能简单地展开成 a || a = b, 因为这里的a如果未定义就会是个例外.
注意, 这里探讨的是"完全等同"的展开式, 因为如果存在特例, 除非语言规范明白地告诉你"这是个特例", 否则'陷阱'就有可能在那里等着你.
rubynroll的意思是
你新开irb 执行a ||= 2和
新开irb执行a || a = 2的结果是不一样的,所以这2个公式不是等价的
这样说来我前面的公式也不行...
这个我没有否定,我一开始只是说不用搞这么复杂去涉及define的问题,而且他的结论展开式为 if a then a else a = 2 end 是不对的,看我第一个回帖的分析,以及上一个回帖的说明
rubynroll的意思是
你新开irb 执行a ||= 2和
新开irb执行a || a = 2的结果是不一样的,所以这2个公式不是等价的
这样说来我前面的公式也不行...
之所以为陷阱加引号, 是因为大部分情况下我们都没有机会掉进去
大多数Ruby教科书在解释 "a ||= b" 这个复合操作时,都说她等效于: "a = a || b", 实际上真的如此么?
让我们在irb里面来看看:
h = Hash.new(1) # 生成一个新的Hash,缺省值为1 => {} h[:x] => 1 # h[:x]未定义,所以返回1 h[:x] ||= 2 => 1 h => {} # 啊? '陷阱'? h[:x] = h[:x] || 2 => 1 h => {:x=>1} # 啊!
David提到,Matz在RubyConf 2007上的解释是"a ||= b"真实的等价应该是: "a or a = b", 但是David后来认为"a || a = b"应该更恰当些.
果真的如此么? 不!
一个简单的例子可以反驳, 如果a未定义,则:
irb(main):001:0> a || a = 2 NameError: undefined local variable or method `a' for main:Object from (irb):1 from :0
所以, 看来"a ||= b"正确的展开应该是: "a = b unless a"
对了么? 还是不对!
"a ||= b"表达式最终返回的是a, 而"a = b unless a"在a非真时返回nil.
所以, "a ||= b"的正确展开式应该为: "if a then a else a = b end"
想不到吧?
=== 补充 ===
鉴于此帖较长,且中间夹杂着不少因我的疏忽和错误造成的无谓争论,因此把最终的到的结论列在这里,免得看起来太累,或者有些人没有耐心看完而增加更多的无谓的争论。
结论如下:
1) a ||= b 不等效于: a = a || b
2) 归纳起来,准确的展开式应该是:
if defined?(a) then (a || a = b) else a = b end
特别感谢lllyq, 这个结论的credit应归于他/她。
若大家发现有更好的展开形式,欢迎讨论。
评论
31 楼
liusong1111
2008-07-21
终于能打汉字了,这可恶的ubuntu,只怪自己不熟吧。
关于if/else是否有and/or组装的等价式,答案是肯定的。
记得ibm developerworks有篇不错的文章,忘了是不是这个:
可爱的 Python: Python 中的函数编程
原文排版有点问题,这个盗链居然正常。
哈哈,原来rubynroll已经把lllyq的回贴合并到了主贴。
等价式还可以进一步简化为:
defined?是个关键字,其神奇效果类似javascript的typeof:
http://redhanded.hobix.com/inspect/methodCheckDefined.html
记得贴过一次这个链接,呵呵~
关于if/else是否有and/or组装的等价式,答案是肯定的。
记得ibm developerworks有篇不错的文章,忘了是不是这个:
可爱的 Python: Python 中的函数编程
原文排版有点问题,这个盗链居然正常。
哈哈,原来rubynroll已经把lllyq的回贴合并到了主贴。
等价式还可以进一步简化为:
defined?(a) && a || a = b
defined?是个关键字,其神奇效果类似javascript的typeof:
http://redhanded.hobix.com/inspect/methodCheckDefined.html
记得贴过一次这个链接,呵呵~
30 楼
rubynroll
2008-07-21
to blackanger:
请看清楚标题,以及仔细阅读所有帖子再发表意见吧,否则就会和我犯下同样的错误。
这里讨论的是a ||= b的generic展开式,这个展开式不应该因a,b为特殊情况而有所区别,即语义的严格定义。
我想此贴的结论已经很明确了,如果对归纳的最终展开式还有什么异议,欢迎发表高见。
另外,对别人的知识妄下论断不会对让你显得更权威有什么帮助;同样,嵌入签名图片里的“资深会员”字样也不会。
请看清楚标题,以及仔细阅读所有帖子再发表意见吧,否则就会和我犯下同样的错误。
这里讨论的是a ||= b的generic展开式,这个展开式不应该因a,b为特殊情况而有所区别,即语义的严格定义。
我想此贴的结论已经很明确了,如果对归纳的最终展开式还有什么异议,欢迎发表高见。
另外,对别人的知识妄下论断不会对让你显得更权威有什么帮助;同样,嵌入签名图片里的“资深会员”字样也不会。
29 楼
liusong1111
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.
28 楼
blackanger
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搞明白再来吧。
=> {}
>> 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搞明白再来吧。
27 楼
entaoyang
2008-07-21
所以, "a ||= b"的正确展开式应该为: "if a then a else a = b end"
想不到吧?
楼主还是学学基本知识吧, 这是想当然的东西, 还想不到?
想不到吧?
楼主还是学学基本知识吧, 这是想当然的东西, 还想不到?
26 楼
liusong1111
2008-07-10
25 楼
whygod
2008-07-10
说实话,看完觉得有点没事找事来说的感觉。
参考一些开源的rails代码,经常可以看到
@page = param[:page]
@page ||= 1
这样的代码,就是处理分页参数的。如果没有传page,就把@page设为1.
本身意思就很明瞭。
不过也有收获,代码还是写得简单清晰一点好。楼主分析辛苦了。
参考一些开源的rails代码,经常可以看到
@page = param[:page]
@page ||= 1
这样的代码,就是处理分页参数的。如果没有传page,就把@page设为1.
本身意思就很明瞭。
不过也有收获,代码还是写得简单清晰一点好。楼主分析辛苦了。
24 楼
geszJava
2008-07-07
晕。
百度谷歌上都可以找到专门讲述ruby陷阱的资料。
ruby自己的文档也有专门讲述trap的部分。不是我杜撰啊。
从来没有看到单独使用ruby的项目,可能是我孤陋寡闻,除去开源库,我真的没发现。可能ruby的优势不在此,ror无疑是ruby最擅长的地方。
但随着groovy,grails发展和兴起,ruby或者ror的优势已经淡化。
毕竟c族群语言在当代具有先天性的亲和力。
ruby是否有前途?不知道,但是复杂而不严谨的语言驾驭起来有难度,使用起来有顾忌,团队整合上有困难。语言不是越复杂越好,而是越简单越好。
曲高和寡,先人早有断言。ruby是文言,而大众只需要大白话。用ruby无疑可以写出锦绣文章,但大部分人却看不懂也改不动。与其做老学究,不如现实一些。
百度谷歌上都可以找到专门讲述ruby陷阱的资料。
ruby自己的文档也有专门讲述trap的部分。不是我杜撰啊。
从来没有看到单独使用ruby的项目,可能是我孤陋寡闻,除去开源库,我真的没发现。可能ruby的优势不在此,ror无疑是ruby最擅长的地方。
但随着groovy,grails发展和兴起,ruby或者ror的优势已经淡化。
毕竟c族群语言在当代具有先天性的亲和力。
ruby是否有前途?不知道,但是复杂而不严谨的语言驾驭起来有难度,使用起来有顾忌,团队整合上有困难。语言不是越复杂越好,而是越简单越好。
曲高和寡,先人早有断言。ruby是文言,而大众只需要大白话。用ruby无疑可以写出锦绣文章,但大部分人却看不懂也改不动。与其做老学究,不如现实一些。
23 楼
rubynroll
2008-07-04
我之所以在这里“咬文嚼字”,是为了追求对语言的精确理解。
对于象ruby这种特性丰富的语言,没有象JavaScript那样有一个定义严谨的规范来作参考,只能靠“咬文嚼字”了。
说“离开ror,ruby啥都不是“这个严重不同意. 单独来看ruby本身就是一门非常优秀的脚本语言,就“陷阱”而言并不比C++多,语言的表达能力并不在Perl之下而可读性非常之高,唯一缺憾是速度较慢,但对于脚本语言来说这个问题并不显著。
我开始用ruby的时候,根本就不知道什么是rails.
对于象ruby这种特性丰富的语言,没有象JavaScript那样有一个定义严谨的规范来作参考,只能靠“咬文嚼字”了。
说“离开ror,ruby啥都不是“这个严重不同意. 单独来看ruby本身就是一门非常优秀的脚本语言,就“陷阱”而言并不比C++多,语言的表达能力并不在Perl之下而可读性非常之高,唯一缺憾是速度较慢,但对于脚本语言来说这个问题并不显著。
我开始用ruby的时候,根本就不知道什么是rails.
22 楼
seemoon
2008-07-04
geszJava 写道
回复不见了?
ruby按我说就是不断句的之乎者也,陷阱多多,没多少前途。最终还是死在这个陷阱上。
ruby的兴起完全是因为ror,离开ror,ruby啥都不是。
还是看好groovy,同为动态语言,却严谨的多。不必咬文嚼字玩文字游戏。
ruby按我说就是不断句的之乎者也,陷阱多多,没多少前途。最终还是死在这个陷阱上。
ruby的兴起完全是因为ror,离开ror,ruby啥都不是。
还是看好groovy,同为动态语言,却严谨的多。不必咬文嚼字玩文字游戏。
希望楼上能把“陷阱多多”一一列举而出,好有益于用ruby干活的劳苦大众。
21 楼
geszJava
2008-07-04
回复不见了?
ruby按我说就是不断句的之乎者也,陷阱多多,没多少前途。最终还是死在这个陷阱上。
ruby的兴起完全是因为ror,离开ror,ruby啥都不是。
还是看好groovy,同为动态语言,却严谨的多。不必咬文嚼字玩文字游戏。
ruby按我说就是不断句的之乎者也,陷阱多多,没多少前途。最终还是死在这个陷阱上。
ruby的兴起完全是因为ror,离开ror,ruby啥都不是。
还是看好groovy,同为动态语言,却严谨的多。不必咬文嚼字玩文字游戏。
20 楼
seemoon
2008-06-30
引用
但是David后来认为"a || a = b"应该更恰当些.
楼主是咬字头咬过头了,在一个极端的情况下(即a没有定义)写了一段代码然后造成了一些混乱,你又怎知david没有个潜台词是a has defined呢?
不过举的那个hash有默认值的||=这个问题是应该提起注意。
19 楼
lllyq
2008-06-30
:) 没问题,或者
a = defined?(a) ? (a || a = b) : b
a = defined?(a) ? (a || a = b) : b
18 楼
rubynroll
2008-06-30
lllyq 写道
rubynroll 写道
lllyq 写道
你可以试试看新开irb,执行
if a then a else a = 2 end
这个效果跟新开irb,执行
a || a = 2 效果是一样的,ruby 版本是1.8.6
if a then a else a = 2 end
这个效果跟新开irb,执行
a || a = 2 效果是一样的,ruby 版本是1.8.6
效果不一样, 至少在版本是1.8.6. 1.8.7上是不一样的, 后者会raise undefined error.
根据你的回复我估计你还是没去试,显然,无论在1.8.6, 1.8.7,后者都会raise undefined error. 前者你试过了么?试过后你就知道为什么我会回第一个帖了\
我说的更清楚一点就是你测试下来两者行为不一样,那是因为你的测试方法不对,你没有每次都新开irb来测试,所以测试方法不对你看到的结果就不对,得出的结论也就不对了
哈哈我真是搞糊涂了,我试的是a ||= 2和a || a = 2, 比较的太多了,连自己都弄糊涂了, 看来此贴应该归新手贴才对:(
至于结论, 你认为 a ||= b最终展开为 if defined?(a) then (a || a = b) else a = b end 还有问题么?
17 楼
lllyq
2008-06-30
rubynroll 写道
lllyq 写道
你可以试试看新开irb,执行
if a then a else a = 2 end
这个效果跟新开irb,执行
a || a = 2 效果是一样的,ruby 版本是1.8.6
if a then a else a = 2 end
这个效果跟新开irb,执行
a || a = 2 效果是一样的,ruby 版本是1.8.6
效果不一样, 至少在版本是1.8.6. 1.8.7上是不一样的, 后者会raise undefined error.
根据你的回复我估计你还是没去试,显然,无论在1.8.6, 1.8.7,后者都会raise undefined error. 前者你试过了么?试过后你就知道为什么我会回第一个帖了\
我说的更清楚一点就是你测试下来两者行为不一样,那是因为你的测试方法不对,你没有每次都新开irb来测试,所以测试方法不对你看到的结果就不对,得出的结论也就不对了
16 楼
rubynroll
2008-06-30
lllyq 写道
你可以试试看新开irb,执行
if a then a else a = 2 end
这个效果跟新开irb,执行
a || a = 2 效果是一样的,ruby 版本是1.8.6
if a then a else a = 2 end
这个效果跟新开irb,执行
a || a = 2 效果是一样的,ruby 版本是1.8.6
效果不一样, 至少在版本是1.8.6. 1.8.7上是不一样的, 后者会raise undefined error.
lllyq 写道
非要用一个准确的展开式下面这个应该可以
if defined?(a) then (a || a = b) else a = nil end
这就是我所想要的讨论的,一个准确的展开式.
但是这个式子还是有问题, 应该是这样才对:
if defined?(a) then (a || a = b) else a = b end
所以结论是不是这样:
1) a ||= b 不等效于: a = a || b
2) 在a已经定义过时, a ||= b等效于a || a = b
3) 在a未定义时, a ||= b等效于a = b
所以归纳起来,准确的展开式应该是:
if defined?(a) then (a || a = b) else a = b end
意见??
15 楼
03131302
2008-06-29
rubynroll 写道
lllyq 写道
这个h[:x]行为有什么特别么?跟预期的行为一致啊
h[:x] ||= 2 并没有对h[:x]赋值,相当于h[:x] || h[:x] = 2,而h[:x] = nil是有一个赋值动作
h[:x] ||= 2 并没有对h[:x]赋值,相当于h[:x] || h[:x] = 2,而h[:x] = nil是有一个赋值动作
我举的那个例子就是为了反驳
caryl 写道
同意楼上,感觉应该相当于
a = nil
a || a = b
caryl说的"楼上"就是
lllyq 写道
a || a = b 就是 a || a = b,本来就没考虑defined?的问题,跟 if a then a else a = b end 一样的,如果你执行下来不一样那估计是你连续执行的问题,前一句相当于做了define
另外, h[:x] ||= 2 相当于h[:x] || h[:x] = 2在这里之所以成立,是因为h这个Hash是已经定义过了. 对于一个通用的 a ||= b, 并不能简单地展开成 a || a = b, 因为这里的a如果未定义就会是个例外.
注意, 这里探讨的是"完全等同"的展开式, 因为如果存在特例, 除非语言规范明白地告诉你"这是个特例", 否则'陷阱'就有可能在那里等着你.
14 楼
caryl
2008-06-29
好,也用代码说事:
先执行一边楼主的代码
可见针对楼主hash的代码,david观点没错。
楼主应该知道,hash的[]是个方法,用个简单的类模拟一下
试一下:
当然,我前面说的相当于
是不能满足上边A的例子的(同样对楼主hash的例子有问题),但是如果根据上边的理解,david说的 a ||= b 相当于 a || a = b没什么问题。
所以我说支持 lllyq 的观点,可能是 ||= 因为随后就是赋值操作,没有raise undefined错误?这可能真得看了源码才知道了。
先执行一边楼主的代码
h = Hash.new(1) # 生成一个新的Hash,缺省值为1 => {} h[:x] => 1 # h[:x]未定义,所以返回1 h[:x] ||= 2 => 1 h => {} h[:x] || h[:x] = 2 => 1 h => {} #恩,还是{}
可见针对楼主hash的代码,david观点没错。
楼主应该知道,hash的[]是个方法,用个简单的类模拟一下
class A def [] defined?(@a) ? @a : 1 end def []=(a) @a = a end end
试一下:
a = A.new a[] # => 1 undefined. a[] ||= 2 # => 1 undefined. a[] || a[] = 2 # => 1 还是一样的 #当然如果没有[]方法中 defined? 的保护,直接执行 a || a = 2 #肯定是要有错误的,因为a未定义
当然,我前面说的相当于
a = nil #定义 a || a = b
是不能满足上边A的例子的(同样对楼主hash的例子有问题),但是如果根据上边的理解,david说的 a ||= b 相当于 a || a = b没什么问题。
所以我说支持 lllyq 的观点,可能是 ||= 因为随后就是赋值操作,没有raise undefined错误?这可能真得看了源码才知道了。
13 楼
lllyq
2008-06-28
Quake Wang 写道
lllyq 写道
你可以试试看新开irb,执行
if a then a else a = 2 end
这个效果跟新开irb,执行
a || a = 2 效果是一样的,ruby 版本是1.8.6
非要用一个准确的展开式下面这个应该可以
if defined?(a) then (a || a = b) else a = nil end
if a then a else a = 2 end
这个效果跟新开irb,执行
a || a = 2 效果是一样的,ruby 版本是1.8.6
非要用一个准确的展开式下面这个应该可以
if defined?(a) then (a || a = b) else a = nil end
rubynroll的意思是
你新开irb 执行a ||= 2和
新开irb执行a || a = 2的结果是不一样的,所以这2个公式不是等价的
这样说来我前面的公式也不行...
这个我没有否定,我一开始只是说不用搞这么复杂去涉及define的问题,而且他的结论展开式为 if a then a else a = 2 end 是不对的,看我第一个回帖的分析,以及上一个回帖的说明
12 楼
QuakeWang
2008-06-28
lllyq 写道
你可以试试看新开irb,执行
if a then a else a = 2 end
这个效果跟新开irb,执行
a || a = 2 效果是一样的,ruby 版本是1.8.6
非要用一个准确的展开式下面这个应该可以
if defined?(a) then (a || a = b) else a = nil end
if a then a else a = 2 end
这个效果跟新开irb,执行
a || a = 2 效果是一样的,ruby 版本是1.8.6
非要用一个准确的展开式下面这个应该可以
if defined?(a) then (a || a = b) else a = nil end
rubynroll的意思是
你新开irb 执行a ||= 2和
新开irb执行a || a = 2的结果是不一样的,所以这2个公式不是等价的
这样说来我前面的公式也不行...
发表评论
-
vi tips
2010-07-20 11:37 0These tips are just memo for my ... -
Setup PPTP VPN on ubuntu 9.10
2009-12-20 19:27 1851Something should be done to set ... -
交叉编译完全解决方案
2009-09-18 09:55 3681[注:本文仅适用于嵌 ... -
OpenCV+Ruby构建图像处理研究平台
2009-09-12 15:31 3040OpenCV OpenCV是一个很流行 ... -
Maemo下跑RubyGnome2
2009-09-09 20:07 2270稍微捣鼓了一下,RubyGnome2顺利在Maemo模拟器上运 ... -
GtkSimpleLayout Inspector
2009-09-06 20:01 1649Inspector介绍 Inspector是GtkSimple ... -
300行代码你能做什么
2009-09-02 14:12 4252我也标题党一回:300行 ... -
FAT over NAND Flash
2009-04-27 21:03 10697引子 最近有一个项目需要在NAND FLASH裸片上建立文件 ... -
UFFS嵌入式NAND FLASH文件系统 FAQ(1)
2009-04-15 19:03 0自从UFFS项目放到SF上, 陆陆续续收到不少邮件询问有关的问 ... -
Tips: 为源代码树打一个干净的包
2009-04-02 13:19 1911为源代码树打一个干净的包 ------------- ... -
Linux tips: allow more than 4 serial ports
2009-02-12 12:58 3816搞嵌入式的经常要和串口通讯打交道,在开发的时候有可能同时使用十 ... -
交叉编译Ruby傻瓜指南
2009-02-05 11:35 2783最近看到有人在交叉编译ruby的时候似乎碰到了许多问题(htt ... -
优化Debian/Ubuntu下的ruby
2008-12-30 19:27 2091我们都知道Debian/Ubuntu通过apt-get安装的r ... -
Debian/Ubuntu Tips: find the right package
2008-12-12 17:35 1105Debian/ubuntu下经常碰到需要安装某个程序,却一时想 ... -
Ruby/GTK应用笔记(3):垃圾回收
2008-09-14 08:39 2610虽然垃圾回收应该属于RubyVM自动处理的事,但是一旦涉及到C ... -
Ruby/GTK应用笔记(2): Gdk::Pixbuf
2008-09-01 17:08 3741Gdk::Pixbuf是GTK库极为重 ... -
Ruby/GTK应用笔记(1): Gtk::Toolbar
2008-08-21 13:04 1965由于Gtk的Toolbar内部接口发生了一些变化,在使用Gtk ... -
Ruby/Rails: 不一样的'Web'应用(续)
2008-07-28 21:23 1298上一篇文章(http://www.itey ... -
Ruby/Rails: 不一样的'Web'应用
2008-07-26 15:45 1457我不是Web程序员,也从 ... -
一个有趣的问题: 如何获取引用名?
2008-07-24 17:26 1358我们知道, 对于 a = 100 这样的一条语句, a是一 ...
相关推荐
Ruby /进度栏 Ruby的终极文本进度栏库! 纯粹带动进度条刺激,将您吓到头顶! 不要错过所有孩子都在谈论的话题! 如果您想让所有人都知道您的宝石或应用程序可以在笼子中生存,那么您想要Ruby级! 比其他186,312个...
pusher-http-ruby, Pusher | owner=@vivangkumar的ruby 服务器库 推 gem 安装&配置将推送器添加到你的Gemfile,然后运行 bundle installgem 'pusher'或者通过 gem 安装gem install pusher在 http://p
Ruby-Braintree是Ruby编程语言中的一个库,用于与Braintree支付网关进行无缝集成。Braintree是一家全球领先的支付处理服务提供商,为在线商家提供了处理信用卡和其他电子支付方式的平台。通过Ruby-Braintree库,...
Netlify Ruby客户端 ====================== Netlify是用于可编程Web的托管服务。 它了解您的文档,处理表单,并允许您通过其API进行部署,管理表单提交,将javascript代码片段注入网站并进行HTML文档的智能更新。 ...
这只是Ruby编程之旅的起点。Ruby的世界里还有更多值得探索的内容,比如元编程、模块、Gem管理、Rails框架等。随着实践的深入,你会逐渐发现Ruby语言的魅力所在。继续学习,参与社区,编写出既优雅又高效的代码,享受...
此外,Ruby-QRcode库也支持SVG输出,这对于在Web应用中生成响应式QR码非常有用,因为SVG可以无损缩放。使用`to_svg`方法即可生成SVG格式的QR码: ```ruby svg_data = qr.as_svg(scale: 4) ``` 总的来说,Ruby-...
### Ruby与JSON:无缝数据交换的秘诀 #### Ruby概述 Ruby是一种高级的、面向对象的编程语言,由日本开发者松本行弘(Yukihiro "Matz" Matsumoto)在1995年创建。该语言的设计目标是提供简单且自然的编程体验,同时...
selenium-webdriver 2.42.0 for Ruby Runtime Dependencies:childprocess >= 0.5.0
Ruby语言教程:从入门到实践.md
Ruby| 数据库: | MongoDB | PostgreSQL | MySQL | ClearDB | 前端: | HTML5 | CSS3 | SASS | 引导带| NPM || React.js | Vue.js | AngularJS | jQuery | 后端: | Node.js | Ruby on Rails |中文(简体) Express...
#### 二、交互式Ruby (IRB) - **启动IRB**: - **Mac OS X**: 打开终端窗口,输入`irb`。 - **Linux**: 打开Shell,输入`irb`。 - **Windows**: 在开始菜单中找到Ruby -> FXRI 并执行。 - **基本操作**: - 输入...
fosl,Ruby lsof API 地位: 该API现在可以使用,但是它不是真正的API,而是对lsof输出的轻度散列包装。示例:“ lsof.rb” 代码: : 这个示例像通常一样运行'lsof',但是将输出捕获到ruby中。 % sudo ruby lsof.rb...
Ruby 是一种动态、开源的编程语言,以其简洁和表达力强的特点受到开发者的喜爱。在IT行业中,数据库连接是常见的任务,无论是在Web应用开发还是数据处理中。Ruby 提供了多种方式来连接不同的数据库系统,如 MySQL、...
这是一个用于格式化 Ruby 哈希的小型简单库,旨在供文本编辑器使用。 它使用和而不是正则表达式,让它可以轻松解析最棘手的 Ruby 代码。 目前,它的格式选项是固执和简单化的。 您可以使用以下格式格式化 Ruby 哈希...
))~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~(( (( )) )) ========= ====== ||\ || ||======== ||========= ====== (( (( / / || || \ || || )) || || )) )) / / || || \ || || )) || |...
1. 安装Ruby: `ruby-2.7.2.tar.gz` 是Ruby的源代码包,版本为2.7.2。首先,你需要解压这个文件: ``` tar -zxvf ruby-2.7.2.tar.gz ``` 进入解压后的目录,执行编译和安装: ``` cd ruby-2.7.2 ./configure...
在给定的"ruby-course"中,你将学习如何使用`If / Else`来创建一个简单的交互式程序。这个程序会询问用户最喜欢的颜色,并根据用户输入给出相应的回应。下面是一个示例代码: ```ruby puts "请输入你最喜欢的颜色:...
Learn the principles behind object-oriented programming and within a few chapters create a fully functional Ruby application. You'll also gain a basic understanding of many ancillary technologies such...
Ruby 版本 提供RubyVersion以简化在程序中检查正确 Ruby 版本的过程。安装 在您的命令行上: $ gem install ruby_version 在Ruby中: require 'ruby_version'用法 # Output RUBY_VERSIONRubyVersion . to_s# Check ...
日历实用程序 PORO(普通的旧Ruby对象)。示例用法: > Calendar.for_week(4).of_month(8).in_year(2012).show{:wed=>22, :thu=>23, :fri=>24, :sat=>25, :sun=>26, :mon=>27, :tue=>28}> Calendar.for_month(6).in_...