首页 > 解决方案 > 我不知道为什么在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

这很好用。所以也许第一个代码的错误是因为它的结果。但我不知道如何解决它。

我希望你能告诉我任何线索。谢谢你。

标签: ruby-on-railsruby

解决方案


对不起。一开始似乎没有问题。唯一的问题是我给了fruit_converter一个列表中不存在的水果。这就是它返回 nil 的原因。但是当我给真正的水果时,它就起作用了。总之谢谢大家。


推荐阅读