You need to enable JavaScript to run this app. Ruby入门:TryRuby平台All together now示例链式调用改写求助
优惠活动
大模型
产品
解决方案
定价
更多

Ruby入门:TryRuby平台All together now示例链式调用改写求助

问题解决:Ruby链式哈希调用修改方案

修改后的正确完整代码

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

# 查看1591年的结果调用如下
puts count_plays(1591)

核心说明

  • 链式写法的逻辑:get_shakey本身会返回存储所有作品数据的哈希对象,Ruby中调用哈希的[]取值方法不需要额外加.,所以直接把原代码里的s = get_shakey和后续的s["William Shakespeare"]合并即可,整个逻辑和原代码完全一致,不会改变功能。
  • 修改后无输出的常见原因:
    1. 未修改调用参数:原示例默认调用的是count_plays(0),没有任何作品的完成年份是0,自然不会输出标题,只会返回计数0。要获取1591年的结果,需要把调用时传入的参数改为1591。
    2. 语法书写错误:如果错误多加了.写成get_shakey.["William Shakespeare"],会触发语法错误,导致代码无法正常运行输出。

运行效果

调用puts count_plays(1591)后,会先逐行输出4部1591年完成的作品标题,最后输出计数结果4,和示例要求的结果一致。

内容的提问来源于stack exchange,提问作者Xenogenesis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.08 15:12:02