呵呵,你举的例子很好啊。不过和你之前的说法自相矛盾... 那你说他们毫无例外的都没有加括号,这是谁错了呢?
如果一定让我两者选其一,我宁可选择你介绍的代码示例,反正不推荐的用法都用了,还加那两个括号干嘛?只要了解 Ruby 运算符的结合性,就会知道,几乎所有情况下,不加括号的表达式很少出错,因为一开始 Ruby 就是为不加括号而设计的。
但是如果让我自己写,我一定会写两行,因为写在一起除了可能会让你出错,没有任何好处可言。这是个条件表达式,又不是方法,或者 block, 这样的代码,在 if 语句内赋值,甚至会给我一个错觉,是不是声明了一个条件表达式内的本地变量?? , 如果不这样写法,我根本不可能有这样的错觉。
我不是果粉, 而且平心而论,咱社区以及网上这种 Apple 一边倒的风气,谈不上哪里不好,但是对于 Ruby 自身的普及绝对是一件大大的坏事情!!
至于苹果装 linux 和苹果装 Windows , 这概念上相差还是老远了,Linus 看重的是苹果的做工,再加上两个系统原本就是一家,一脉相承,都是 UNIX 的子孙,统称UNIX LIKE系统,纯 CLI 方面差别自然不大,linus 肯定不是为了去用 Mac 的图形界面才使用 Mac 的。
就算不谈两个系统的渊源,极端点说,人家是牛人,就算没有驱动,人家可以自己写,无论什么电脑,在他们这帮人手里,肯定是效益最大化,硬件只是一个平台,软件才是精髓。这点和绝大多数买苹果装 XP 或者 WIN7 的使用者完全不同,这种人我见过好多,基本上都是只会 QQ 斗地主的电脑 BC, 有的连打字都不会,这种情况下,99% 的用户都是为了显摆装逼的。
支持,支持!!
bash 的确很不错,之前我写了不少简单的函数,一股脑全部放倒.bashrc 里面,又乱,又没有条理,而且文件好大了,不易于管理,所以后我就把这些函数提取了出来,单独作为脚本放倒 PATH 里面,提取出来之后,突然发现,很多命令彼此之间经过很少的改动,就可以管道起来,实现比原先有趣的多的功能。然后就这个思路发展下去,精简了很多函数,但是实现了比之前多很多的功能,真的很过瘾。现在想想,这不单有Keep It Simple Stupid的精髓,还有点重构的意思。重构的核心思想,不也是将每一个具体功能的实现,提取到一个单独的实例方法中,也只有等你提取出来之后,才能体会到一大片之前几乎不可能注意到的艳阳天.
Ubuntu 你都觉得不好用,那让我这个用 Slackware 的人情以何堪 ?
我这个连包管理都没有,图形界面说是 XFCE, 我知识用个 Terminal 而已。下一步 Terminal 我也打算省掉了,因为 Emacs 24 自带的 Term 或者 Shell-mode 已经非常好了。
可是我感觉现在越用越爽,做个什么事情,效率越来越高,为什么呢?因为你了解越多,你会越喜欢他。其实我挺初级,但是我知道我现在已经深刻理解了 Unix 的哲学,并且方向是对的,使用方式也是没错的。
用鼠标点来点去,你永远无法成为 Linux 或 Mac 下真正的高手,Windows 下就另说了,不一样的哲学。
相信我,就直接把 Win7 格式化了,换成 linux 好了。断了其他所有的念想,用不了一个月,你就入门了。
最近,在 bash shell 脚本编写方面小有心得,主要是为了体现一种在 Linux 下工作的极致效率, 换句话说,把 CLI 进行到底,不似 Mac, 图形界面也很好,这才是 Linux 的精髓。
学过 Ruby 之后,反过来看 Bash shell, 真的是很优秀的。至少在我目前解决的这些问题的场合 (都是小问题,典型的,Linux 下面常用的那个几个命令来回组合,通过管道来实现需求,也就是 Linux 常说的K.I.S.S, 我估计咱社区很多人都不知道 KISS 是啥意思吧.)
扯了半天,就算我想分享,大家估计也不见得感兴趣... 我发现我可能离咱社区的主流思潮越来越远了。
p.s.
楼上跟主题有关的总共有 7 条回复。(不连我), 只有第一条在说 Ruby, 我多么希望这是 RailsConf.
我怎么没感觉到呢?我虽然没有系统的看过国外有关 Ruby 的博文,不过也算经常 Google 到一些东西,到也没发现,不过总的来说,我还是看书多,看文章少,也许这不是空穴来风。不过,就算是事实,又能代表什么? 又有什么意义? 本来就不是新手的玩意儿。
#16 楼 @gaicitadie 盖茨他爹,我觉得你听认真啊。没事儿也发发技术贴啥的。尤其是有关 Python 和 Ruby 的。咱也学习学习. 顺便提一句,我就挺认死理的,而且崇尚经典,你想找人讨论,可以找我啊
Emacs 无论是<<- 还是<<都是可以支持的。而且针对 heredoc 参数之后的其他参数,缩进支持也不错。
现在只要是多行字符串,我都倾向于使用 heredoc,很爽呀。
没看楼上内容,不过看楼主标题,估计要讲的不是乱, 是灵活。
Ruby 这门语言的特点是灵活,同一个问题可以用很多种优雅的方法来实现。
怎么说呢?这就像武侠里的练功,练到后来,随性而发,在最适合的场合,使用相对最适合,最优雅的方法. Ruby 给你提供了实现这种选择的基石,剩下的就看你怎么发挥了。
你说你用过 delphi, 可是你竟然不习惯 end, 其实这两者不仅仅是 end 相似,还有个共同点是:设计层次, 比较严谨而且具有一致性, 但是使用上语法却非常灵活(Object pascal 的语法,和 C, C++ 完全是同样级别的)
p.s. 顺便再说一句,不管是{}, 还是 begin end, do end, 这些都不是让人敲的,要不然,要 snippet 干嘛?
我怎么发现,我即使把 Rails 搞明白了,也不想研究那些个东西。
没别的,就是觉得 Web 开发太复杂,太繁琐,理论性的东西太多了,反倒是感性的,有趣的东西反而少。
还是 Ruby 自身有趣一些。
......
方法都让大家想完了..
来个 loop 版本的吧。
x = a1.zip(a2, a3).to_enum
y = []
loop { y << x.next.reduce(:+) }
Ruby语言入门 我看过一点,书本身還是有特色的,就是坑爹的翻译质量太差!! 到处错误。有机会,我打算看看英文版。
Ruby Programming-向ruby之父学程序设计 作为入门,是不二的选择,我看完双飞燕后都看过这本书,一天不到就看完了。挺好的。(这本书的序是 Matz 写的)
最后,说一句,别听一楼的,那是瞎掰. 连 Matz 本人都说:这本书如果完全读懂, 那么你就精通Ruby了(这不是我瞎掰的,请自行翻阅原书 266 页) , 我怀疑大部分说双飞燕是入门, 应该都没有从头到尾通读过双飞燕。这么说吧,我到目前,也就仅仅读过这么一本中文版本的 Ruby 书籍 (捎带看了不少 ri 文档), 但自我感觉绝对不是入门那么简单了 (光笔记就 15000+ 行了). 如果 Ruby 编程语言作为入门,那么至少要非常熟悉一门其他语言才可以。没信心的话,这本留着最后看吧。咱社区大把的人没看过这本书,Rails 照样写的刷刷的。我是子愧不如的。
不过,如果想提高或进阶,这本书是必读的。但是看你描述,最好不要一开始就读。