You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ruby方法定义语法错误求助:如何将字符串计数逻辑封装为接收双参数的substrings方法

Ruby方法定义语法错误求助:如何将字符串计数逻辑封装为接收双参数的substrings方法

嗨,看到你的问题啦,你遇到的核心问题是Ruby方法定义的参数语法错误,我来一步步帮你理清~

先解决最直接的语法错误

你写def substrings("word", library)的时候触发了SyntaxError,原因很简单:Ruby方法定义时,参数必须是变量名(标识符),不能直接写具体的字符串字面量(比如"word")。Ruby在这里期望的是一个用来接收调用时传入值的变量名,而不是具体的参数值。

正确的方法写法(分两种需求场景)

根据你提供的逻辑,我猜你有两种可能的需求,分别给你对应的正确写法:

场景1:统计整个字典数组中每个唯一词的出现次数

如果你想让方法接收一个数组,返回数组中每个词的出现次数哈希:

# 方法定义:参数是library(接收传入的数组)
def substrings(library)
  # 你原本的词频统计逻辑是对的,直接复用即可
  library.each_with_object(Hash.new(0)) do |word, count_hash|
    count_hash[word] += 1
  end
end

# 调用方法:先定义你的字典数组,再传入方法
my_library = ["below","down","go","going","horn","how","howdy","it","i","low","own","part", "part", "partner","sit", "low", "go", "go"]
# 输出统计结果
puts substrings(my_library)

场景2:只统计指定词在字典数组中的出现次数

如果你想让方法接收一个目标词和字典数组,返回该词的出现次数(包装成你想要的哈希格式):

# 方法定义:参数是target_word(目标词)和library(字典数组)
def substrings(target_word, library)
  # 用数组的count方法统计目标词出现次数,包装成哈希
  { target_word => library.count(target_word) }
end

# 调用方法
my_library = ["below","down","go","going","horn","how","howdy","it","i","low","own","part", "part", "partner","sit", "low", "go", "go"]
# 传入目标词"go"和数组,输出{"go"=>3}
puts substrings("go", my_library)

额外需要修正的小问题

  1. 你的原方法里硬编码了library = [...],这会覆盖你传入的library参数,所以一定要删掉这行,直接使用方法参数接收的值。
  2. 调用方法前,要确保你传入的变量(比如library)已经被定义过,否则会报“undefined local variable”错误。

学习资源推荐

如果想更系统地掌握Ruby方法定义,可以去看Ruby官方文档的方法相关章节,或者找一本入门级的Ruby书籍(比如《Ruby编程语言》),里面会详细讲解方法的定义、参数传递、作用域等基础概念,帮你彻底理清这部分逻辑~

备注:内容来源于stack exchange,提问作者Jessica Yeverino

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.15 10:54:54