分享 rubymonk 学习

dreamrise · 2012年03月06日 · 最后由 dreamrise 回复于 2012年03月06日 · 2794 次阅读

今天效率还行,一晚上把 rubymonk 的题基本做完了,最后一章《Functional Programming in Ruby - Lambdas and Blocks》的英文太晦涩了,只做了 3 道,还有 2 道就可以完结了。不过这两道题有难度,没搞清楚概念还是做不了。

http://rubymonk.com/chapters/9-more-ruby/lessons/42-functional-programming-in-ruby

关键这一章的英文也不怎么读的懂。

我只做出 Lambdas vs. Blocks 的第一道,后面两道求帮助。顺便帮忙翻译下英文。

class Array
  def transmogrify # see? no 'fn' parameter. magic.
    result = []
    each do |pair|
      # how do you think 'yield' will be used here?
      result << yield(pair)
    end
    result
  end
end

def names
  [["Christopher", "Alexander"],
   ["John", "McCarthy"],
   ["Joshua", "Norton"]].transmogrify do |pair|
      # by passing the entire element, we give more control to the block
      pair[0] + " " + pair[1]
  end
end

class Hero
  def initialize(*names)
    @names = names
  end
  def full_name
    @names.join(' ')
  end
end

def names
  heroes = [Hero.new("Christopher", "Alexander"),
            Hero.new("John", "McCarthy"),
            Hero.new("Emperor", "Joshua", "Abraham", "Norton")]
  heroes.map(&:full_name)
end

哥,学学排版啊。看我帮你修改那个帖子内容。

# bust out a beefy reduce on this bad boy:
["emperor", "joshua", "abraham", "norton"].inject('') do |result,str|
    "#{result} #{str.capitalize}".strip
end



总算做完了。

抱歉 Markdown 的语法格式还没开始学,只学回了简单的加 ruby 代码段的标识。

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