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

bony · March 09, 2012 · Last by zw963 replied at June 16, 2012 · 6021 hits

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

Matz 这是在向 Haskell 致敬

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

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

Evolution of a Python programmer: https://gist.github.com/289467

导师级别牛死了...

哈哈,有意思。

我是 初心者

同楼上。。。

学习中。。。。

我靠~ 我怎么没想过用 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

Unknow user #20 June 16, 2012

初心者。。 压力。。

#17 楼 @fsword

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

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

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

You need to Sign in before reply, if you don't have an account, please Sign up first.