FAQ: Hashes and Symbols - Converting Between Symbols and Strings

This community-built FAQ covers the “Converting Between Symbols and Strings” exercise from the lesson “Hashes and Symbols”.

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

Learn Ruby

FAQs on the exercise Converting Between Symbols and Strings

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!

If I run the initial code even before adding to it, it gives out warning:

(test):10: warning: found = in conditional, should be ==

How crucial is it?

1 Like

Not the best of instructions for this exercise; in fact they were a bit misleading. In step 3, instead of saying:

  1. For each s in strings , use .to_sym to convert s to a symbol and use .push to add that new symbol to symbols .

They should’ve said for each ‘s’ push it to symbols and then convert each string to symbol using .to_sym

I was getting the same error as you.

I’m getting the same error as well. I have

strings = [“HTML”, “CSS”, “JavaScript”, “Python”, “Ruby”]

Add your code below!

symbols =
strings.each do |s|
symbols.push(s)
s.to_s
“s”.to_sym
end

puts symbols

I tried to push it first and get the same error?

The conversion to symbol should take place before pushing it to the symbols array.

strings.each do |s|
    t = s.to_sym
    symbols.push(t)
end
1 Like

I don’t believe the instructions are misleading, but I don’t like the format of the .each used in the example. What I wrote and succeeded with is below.

symbols = []

strings.each { |s| symbols.push(s.to_sym) }

print symbols

Why ‘hate’ when they are both valid. Learners should know how to do both, and not get fixated or biased toward one in favor of another. We start them out with do..end, and let them get comfortable with the syntax, then work them into block syntax. I’m sure that’s how I learned this stuff, way back when.

I’m merely stating my preference. If ‘hate’ is too strong a word to use here, I have edited my post.

1 Like