锁定老帖子 主题:Ruby Tricks 大全
精华帖 (9) :: 良好帖 (8) :: 新手帖 (1) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-06-25
最后修改:2009-06-25
扯些关于点点的: 方法与参数是右结合的,但四则运算符是左结合的,但运算符又是方法……
5 * 3 - 2 #=> 13 5.* 3 - 2 #=> 5 在1.8会得到一条警告,future version云云,但1.9就不警告了。 5 * 3.- 2 #=> 语法错误 …… unexpected tINTEGER, 1.8.6, 1.9.1, jruby1.3 均如此 5 * 3.- (2) #=> 5 加个括号就过去了,是不是很囧?…… 5.* 3.- 2 #=> 5 ray_linn 写道 <dtml-comment> Zope-DTML version of 99 Bottles of beer (Bottles.html) See @ http://www.stowasser.tv/algo/Bottles.html Harald Stowasser </dtml-comment> <dtml-var standard_html_header> <dtml-in "_.range(99, 0, -1)" prefix=bottle> <dtml-var bottle_item> bottle(s) of beer on the wall<br> <dtml-var bottle_item> bottle(s) of beer.<br> Take one down, pass it around<br> <dtml-var "bottle_item-1"> bottle(s) of beer on the wall."<br><br> </dtml-in> <dtml-var standard_html_footer> ms这个也很强。 这个没有准确的实现需求,n == 0 时得用 no more,而且 no more 在句首和句中的大小写是不同的,最后一行必须买酒并 reset 99 (于是这个可以无穷的唱下去 ……) 虽然人家特意声明不是比短的,还是写了个相当短的版本 - - http://gist.github.com/135335 |
|
返回顶楼 | |
发表时间:2009-06-25
俺倒不是看中短,而是它是标签语言,不知道加入<html>tag会如何。
|
|
返回顶楼 | |
发表时间:2009-06-25
ray_linn 写道 俺倒不是看中短,而是它是标签语言,不知道加入<html>tag会如何。
html5 ? 感觉现在只能用 <script> 或者 XSLT 避免手动穷举 …… |
|
返回顶楼 | |
发表时间:2009-06-25
night_stalker 写道 ray_linn 写道 俺倒不是看中短,而是它是标签语言,不知道加入<html>tag会如何。
html5 ? 感觉现在只能用 <script> 或者 XSLT 避免手动穷举 …… XSLT是个啰嗦的技术。。。。我是觉得用这个来表达视图逻辑。。。感觉很不错。 |
|
返回顶楼 | |
发表时间:2009-12-27
方法串联:
ruby 1.9里的Object#tap http://moonbase.rydia.net/mental/blog/programming/eavesdropping-on-expressions Rails里用returning |
|
返回顶楼 | |
发表时间:2010-04-02
遍历数组时候加上进度条:
def pretty_process(array, start = Time.now) total = array.to_a.size array.each_with_index do |item, index| yield(item) if block_given? count = index + 1 avg = (Time.now - start) * 1.0 / (index + 1) eta = ((total - count)*avg)/60 printf "\r%.2f %%, %d / %d, AVG: %f sec, ETA: %.0f min, PASSED: %d min ... ", count * 100.0 / total, count, total, avg, eta, (Time.now - start)/60 end end example: irb(main):025:0> pretty_process((0..20)) do |i| irb(main):026:1* sleep i irb(main):027:1> end 28.57 %, 6 / 21, AVG: 2.503504 sec, ETA: 1 min, PASSED: 0 min ... |
|
返回顶楼 | |