我在学ruby,我一辈子都搞不懂它的作用是什么:

def topic_list
  topics.map(&:name).join(",")
end

def topic_list=(names)
  if names.present?
    topics = names.split(",")
    self.topics = topics.map do |n|
      unless topic = Topic.find_by(slug: n)
        topic = Topic.create!(name: n)
      end
      topic
    end
  end
end

为什么两个函数有相同的名称?第一个函数调用第二个函数吗?

最佳答案

topic_list是getter,topic_list=是setter方法。不,它们不是相同的方法。
这个问题将有助于作为这个概念的基本食物。所以读它。
方法self.topics = topics.map...中的topic_list=行和方法topics.map(&:name).join(",")中的topic_list行闻起来有一个getter称为topics和settertopics=。我确信(如果你告诉我这段代码仍然有效)通过查看你的代码。

关于ruby-on-rails - 具有相同名称的功能有什么作用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21425580/

10-10 17:26