What do functions with the same name do?

ruby, ruby-on-rails

Solution

`topic_list` is a getter and `topic_list=` is a setter method. No they are not the same methods.

This question Trying to learn / understand Ruby setter and getter methods will be helpful as a basic food for this concept. So Read it.

The line `self.topics = topics.map...` in the method `topic_list=`, and `topics.map(&:name).join(",")` line in the method `topic_list` smells there is one getter called `topics` and setter `topics=`. I am sure(If you tell this code works altough) about this by looking at your code.

Problem

I'm learning ruby and can't for the life of it figure out what this does: ``` 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 ``` Why would two functions have the same name? Does the first function call the second one?

Original source

Related problems