Ruby 今天看了 matz 的一个推,很有感触啊。

bony · 2012年03月09日 · 最后由 zw963 回复于 2012年06月16日 · 6020 次阅读

感觉就是真正的高手,是要快速正确高效的解决问题,而不是纠结于细节的方法。
也告示大家神马框架,语言,性能,抽象都是浮云。。
知识,才是力量!!

Matz 这是在向 Haskell 致敬

The Evolution of a Haskell Programmer http://www.willamette.edu/~fruehr/haskell/evolution.html

Matz 也是幽默细胞满身的人哪~

导师级别牛死了...

哈哈,有意思。

我是 初心者

同楼上。。。

学习中。。。。

我靠~ 我怎么没想过用 inject 来求阶乘?

初心者 +1

深有感触啊。还是在盒子里钻不出来。佩服!

def fact(n, hash)
  (1..n).reduce(hash[:method])
end

p fact(10, method: :+)          # => 55
p fact(10, method: :*)          # => 3628800

直接通过哈希传递方法,哈哈。

只会 (1..10).inject{|a,b| a+= b} 为什么可以 (1..10).inject(:+) 传一个方法进去,它的操作会变成?

有机会试试传递一个字符串进去。

#12 楼 @zw963 为什么要传一个 hash 呢?可以更直接的

1.9.3p194 :001 > def fact(n, method); (1..n).reduce(method); end
 => nil 
1.9.3p194 :002 > fact(10, :+)
 => 55 
1.9.3p194 :003 > fact(10, :*)
 => 3628800 

竟然被導師了。

学前班 +1

匿名 #20 2012年06月16日

初心者。。 压力。。

#17 楼 @fsword

是啊,还是没有跳出盒子啊!(Out of Box).

不过,对于熟悉命名参数的人,我那种用法更好懂一些。

p fact(10, :method => :+) p fact(10, :method => :*)

需要 登录 后方可回复, 如果你还没有账号请 注册新账号