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

Ruby Tricks 大全

浏览 9262 次
精华帖 (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
0 请登录后投票
   发表时间:2009-06-25  
俺倒不是看中短,而是它是标签语言,不知道加入<html>tag会如何。
0 请登录后投票
   发表时间:2009-06-25  
ray_linn 写道
俺倒不是看中短,而是它是标签语言,不知道加入<html>tag会如何。


html5 ? 感觉现在只能用 <script> 或者 XSLT 避免手动穷举 ……
0 请登录后投票
   发表时间:2009-06-25  
night_stalker 写道
ray_linn 写道
俺倒不是看中短,而是它是标签语言,不知道加入<html>tag会如何。


html5 ? 感觉现在只能用 <script> 或者 XSLT 避免手动穷举 ……



XSLT是个啰嗦的技术。。。。我是觉得用这个来表达视图逻辑。。。感觉很不错。
0 请登录后投票
   发表时间:2009-12-27  
方法串联:
ruby 1.9里的Object#tap
http://moonbase.rydia.net/mental/blog/programming/eavesdropping-on-expressions
Rails里用returning
0 请登录后投票
   发表时间: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 ... 
0 请登录后投票
论坛首页 编程语言技术版

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