论坛首页 编程语言技术论坛

Ruby惯用法

浏览 48304 次
锁定老帖子 主题:Ruby惯用法
该帖已经被评为精华帖
作者 正文
   发表时间:2006-09-20  
谢谢大家的补充和斧正 :^) 我相应更新了一些内容

python的list comprehension是我个人很喜欢的syntax sugar,它主要是map和filter的复合化身,和inject/reduce/fold应该没瓜葛。

关于name space管理,最近关于Rails的controller和model为什么用name space分割很麻烦有不少争论。另外有些plugin也不注意合理使用name space包裹。Rails下Module.constants已经包含太多所谓根命名,这个数量越多冲突可能性越高。

firebody: 辛苦你翻译了,我想java的fp扩展里应该有类似功能。我原文说’返回两个结果‘确实容易让人困扰,已澄清。
0 请登录后投票
   发表时间:2006-09-20  
还有借鉴了Perl的:
names = %w[ruby rails java python cookoo firebody]
等同于:
names = ["ruby", "rails", "java", "python", "cookoo", "firebody"]


0 请登录后投票
   发表时间:2006-09-20  
buaawhl 写道

。。。

搜索了一下,ruby unshift,结果出来很多 array unshift 的结果。
到底是没有找到 $:.unshift('buildscript') 的具体说明。


你没找错啊,$:是一个Array类型的全局变量,unshift是Array的一个实例变量。

找文档无需Google的,ri一下就OK了:
ri Array#unshift
0 请登录后投票
   发表时间:2006-09-20  
cookoo 写道


python的list comprehension是我个人很喜欢的syntax sugar



我觉得Python的list comprehension很丑陋,英语单词太多,复杂一点的list comprehension就能写成一长串,反而不好阅读。
好像还是Haskell的list comprehension看着更明白
0 请登录后投票
   发表时间:2006-09-20  
Suninny 写道
还有借鉴了Perl的:
names = %w[ruby rails java python cookoo firebody]
等同于:
names = ["ruby", "rails", "java", "python", "cookoo", "firebody"]

%w, %r, %Q, %q, %s, %x还挺多。

另外不光是括号、中括号,键盘上能看到的符号差不多都支持:

%w@ruby rails java python cookoo firebody@
%w#ruby rails java python cookoo firebody#
%w~ruby rails java python cookoo firebody~
...
真是方便。
0 请登录后投票
   发表时间:2006-09-20  
njmzhang 写道
cookoo 写道


python的list comprehension是我个人很喜欢的syntax sugar



我觉得Python的list comprehension很丑陋,英语单词太多,复杂一点的list comprehension就能写成一长串,反而不好阅读。
好像还是Haskell的list comprehension看着更明白

python的list comprehension语法偏自然语言,haskell的偏数学表达,两个各有千秋,但都比ruby没有强。当然list comprehension本身也不是万能,不能把什么都往里面塞,复杂的还是老实用map之类的好。
0 请登录后投票
   发表时间:2006-09-20  
qiezi 写道
Suninny 写道
还有借鉴了Perl的:
names = %w[ruby rails java python cookoo firebody]
等同于:
names = ["ruby", "rails", "java", "python", "cookoo", "firebody"]

%w, %r, %Q, %q, %s, %x还挺多。

另外不光是括号、中括号,键盘上能看到的符号差不多都支持:

%w@ruby rails java python cookoo firebody@
%w#ruby rails java python cookoo firebody#
%w~ruby rails java python cookoo firebody~
...
真是方便。

@@这个太离谱了吧。。。常用只有%w{},别的很少用,不就整个字符串嘛。
而且这个再加上字符串格式化那些%一堆或日期格式化里的%一堆,天哪,还是不要增加记忆负担了。

0 请登录后投票
   发表时间:2006-09-20  
cookoo 写道

@@这个太离谱了吧。。。常用只有%w{},别的很少用,不就整个字符串嘛。
而且这个再加上字符串格式化那些%一堆或日期格式化里的%一堆,天哪,还是不要增加记忆负担了。


主要是用在正则表达式里。有时候正则表达式里要匹配'/'字符,为了不写成\/,就把默认的//改成%r{},如果里面还要匹配{},就可以改成%r()。圆括号和方括号又容易看错成正则表达式里面的东西,于是改成@。。。
0 请登录后投票
   发表时间:2006-09-20  
extionsions也是一个扩展包, cookoo 有没有在用?
0 请登录后投票
   发表时间:2006-09-20  
好用么?我看了一下,大部分都已经包含在facet/core里面了。

另外好像不能精细require? 这样的话在rails里用会引起一些命名冲突。
0 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics