ruby-on-rails - 我不知道为什么在Ruby中调用实例方法时变成了NilClass
问题描述
我可能误解了方法的概念,如果您愿意,我需要您的帮助。
我面临的问题是,下面的这个方法完美地返回了 String,但是当我尝试在不同类的方法中使用它时,它返回 NilClass。
class FruitConverter
def fruit_converter(fruit)
return if fruit.nil?
find_favorite_fruit = list.find{|k,v| k == fruit}
find_favorite_fruit ← when I print it it returns "りんご" if fruit == "apple"
end
def list
{
"りんご" : "とっても美味しいりんご",
"オレンジ" : "とっても美味しいオレンジ"
}
end
end
↑这在这里工作得很好,但是当我在另一个类的方法中使用它时,结果变成了这样的 NilClass。
def fruit
fav_fruit = @target_person.fruit
fruit = FruitConverter.new.fruit_converter(fruit)
fruit ←when print fruit.class it returns nilClass.
end
我有一堆几乎相同的实例方法,这些方法可以工作。其中之一是这样的。
class SizeConverter
def size_converter(size)
return if size.nil?
find_size = list.find{|k,v| k == size.to_sym}
find_size
end
def list
{
small : "Ohkii",
medium : "chukurai"
}
end
end
这很好用。所以也许第一个代码的错误是因为它的结果。但我不知道如何解决它。
我希望你能告诉我任何线索。谢谢你。
解决方案
对不起。一开始似乎没有问题。唯一的问题是我给了fruit_converter一个列表中不存在的水果。这就是它返回 nil 的原因。但是当我给真正的水果时,它就起作用了。总之谢谢大家。
推荐阅读
- php - add_action 在插件 activate() 中不起作用 使用 wordpress 插件样板的方法
- java - Java 8 - 对象方法引用执行空引用的方法
- java - Java - 为什么另一个包中的子级无法通过父级引用访问父级的受保护方法?
- charts - 谷歌图表,y轴未排序,无法修复
- functional-programming - 如何在 OCaml 中进行函数覆盖?
- c++ - 滑动窗口最大值问题中的分段错误
- java - 在 Eclipse 项目中哪里可以找到文件
- node.js - 找不到入口模块中的错误:错误:无法解析“./src”
- android - Android 应用程序在安装 @react-native-firebase/messaging (v6) 时崩溃
- ocaml - 字符串 printf 的 Ocaml 循环