I'm learning Ruby and practicing by writing a Caesar cipher. Here's my code so far:
print "Enter rotation: "
rotation = gets.chomp
print "Enter string to encrypt: "
string = gets.chomp
def encrypt
keys = (' '..'z').to_a
values = (' '..'z').to_a.rotate(rotation)
hash = Hash[keys.zip(values)]
chars = string.split('')
encrypted_chars = chars.collect { |char| hash[char] }
encryptd_string = encrypted_chars.join
end
puts "Encrypted string: " + encrypt
It's saying that I don't have access to the rotation
variable inside of the encrypt
method. NameError: undefined local variable or method 'rotation' for main:Object
.
From what I understand, rotation
is a local variable with outer scope, and should be accessible inside of the encrypt
method. Obviously something is wrong with that reasoning, so could someone explain what's wrong?