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)
额外需要修正的小问题
- 你的原方法里硬编码了
library = [...],这会覆盖你传入的library参数,所以一定要删掉这行,直接使用方法参数接收的值。 - 调用方法前,要确保你传入的变量(比如
library)已经被定义过,否则会报“undefined local variable”错误。
学习资源推荐
如果想更系统地掌握Ruby方法定义,可以去看Ruby官方文档的方法相关章节,或者找一本入门级的Ruby书籍(比如《Ruby编程语言》),里面会详细讲解方法的定义、参数传递、作用域等基础概念,帮你彻底理清这部分逻辑~
备注:内容来源于stack exchange,提问作者Jessica Yeverino
相关产品推荐
相关产品推荐

