Skip to content

Latest commit

 

History

History
33 lines (24 loc) · 1.13 KB

File metadata and controls

33 lines (24 loc) · 1.13 KB
lang ZH
title 全加在一起
answer ^4$
ok 没错,莎士比亚在1591年写了四部剧
error 1591年的答案应该是4部
load prev

假如我们想要知道莎士比亚在某一特定的年份写的剧的名字和数量。

Ruby提供了__select__ 方法来检索哈希中的值。它能根据我们在块中的定义来检索并返回值

我们利用在 each 方法中链接 select 方法。这种方法链接,我们已经在之前逆置诗的时候用过了。

我已经替你定义好了 count_plays 你试着通过下面的代码来找出莎士比亚在1591年写了多少剧本吧:

def count_plays(year)
  s = get_shakey
  
  s["William Shakespeare"]
    .select { |k, v|
      v["finished"] == year
    }.each { |key, val|
      puts val["title"]
    }.count
end

puts count_plays(1591)

你注意到我在each方法的结尾链接了count方法吗。这将给我们一个 count_plays 方法的返回值。

有另一种写法,可以直接把 ["William Shakespeare"].select { |k, v| 写在 s = getshakey 后面。(不需要加.)