FAQ: Methods, Blocks, & Sorting - Basic Methods

This community-built FAQ covers the “Basic Methods” exercise from the lesson “Methods, Blocks, & Sorting”.

Paths and Courses
This exercise can be found in the following Codecademy content:

Learn Ruby

FAQs on the exercise Basic Methods

There are currently no frequently asked questions associated with this exercise – that’s where you come in! You can contribute to this section by offering your own questions, answers, or clarifications on this exercise. Ask or answer a question by clicking reply (reply) below.

If you’ve had an “aha” moment about the concepts, formatting, syntax, or anything else with this exercise, consider sharing those insights! Teaching others and answering their questions is one of the best ways to learn and stay sharp.

Join the Discussion. Help a fellow learner on their journey.

Ask or answer a question about this exercise by clicking reply (reply) below!

Agree with a comment or answer? Like (like) to up-vote the contribution!

Need broader help or resources? Head here.

Looking for motivation to keep learning? Join our wider discussions.

Learn more about how to use this guide.

Found a bug? Report it!

Have a question about your account or billing? Reach out to our customer support team!

None of the above? Find out where to ask other questions here!

Hi,
my code:

def welcome
  puts "Welcome to Ruby!"
end
puts welcome

output:

Welcome to Ruby!
25
Welcome to Ruby!

why is that? is it because I didn’t use return?

Hey !

I have the same issue than preteritar :

def welcome()
  puts "Welcome to Ruby !"
end

puts welcome

it outputs :

Welcome to Ruby !
26

Does anyone have an explanation about that ? Thanks !

You are both printing it twice, (within the method and after) - to recall the method simply write its name after and lose the puts

2 Likes

Awesome thanks for your answer kailhus :slight_smile:

???

Is this the correct input:

def welcome
return “Welcome to Ruby!”
end
puts welcome

AND/OR

def welcome
puts “Welcome to Ruby!”
end

Are both correct?

Correct?

def welcome
  "Welcome to Ruby!"
end
puts welcome

Welcome to Ruby. Be sure to keep rubydocs handy.

But in your code you didn’t have an action in the argument. Shouldn’t it either have return or puts before “Welcome to Ruby!” like my 2 examples above?

Also which rubydocs are you referring to?

Ruby methods may be parameterless, as above, meaning there is no argument and no parens required when we call them. We treat them like any polled variable.

Also good to keep in mind is implicit return which is always the last line in the code block when return is not explicit before the last line. The above is only one line, so that is what gets returned.

SERP: rubydocs - Google Search

For everyone confused here, you are defining a function named welcome that outputs to the console “Welcome to Ruby”. You are supposed to just call the welcome function, which will execute the code inside of it (calling the welcome function outputs “Welcome to Ruby!”), you are not supposed to output the return value of the welcome method.
(I hope I am making sense.)

Example:
Good code: Defines a welcome method which outputs “Welcome to Ruby!” and then calls that method, executing the code inside of it.

def welcome
  puts "Welcome to Ruby!"
end

welcome # => "Welcome to Ruby!"

Good code: Defines a method which returns “Welcome to Ruby!” and then outputs the return value of that method.

def welcome
  return "Welcome to Ruby!"
end

puts welcome # => "Welcome to Ruby!"

Bad code: Defines a method which outputs “Welcome to Ruby!” and then tries to puts welcome.

def welcome
  puts "Welcome to Ruby!"
end

puts welcome # => "Welcome to Ruby"; 25; "Welcome to Ruby!"

Bad code: Defines a method which outputs “Welcome to Ruby” and then does nothing with that method.

def welcome
  puts "Welcome to Ruby!"
end

# nothing happens.

Hope I helped!