Я пытаюсь создать простой хеш для поиска соответствующих строк для некоторых символов (: student_number,: first_name, ...).У меня проблема с получением данных из этой функции.Вот функция
Фрагмент A
def get_nice_column_name(col_symbol)
column_names = {
:first_name => "Student's First Name",
:last_name => "Student's Last Name",
:email => "Student's Email",
:given_name => "Student's Given Name"
}
return column_names[col_symbol]
end
Вот как я его использую, но не работает :
Фрагмент B
col_titles = []
params = {:first_name => 'true',
:last_name => 'true',
:email => 'true',
:given_name => 'true' }
params.each do |key, value|
if ( value == 'true')
col_titles << get_nice_column_name(key)
end
end
Когда я смотрю на col_titles, я ожидаю ["Имя студента", "Фамилия студента"], но на самом деле я ничего не получаю, просто [] пустой массив.
Я думал, что это былостранно, поэтому я попытался распечатать object_id символов (col_symbol в фрагменте A) и символы в хэше column_names, я получил разные object_ids.Мне интересно, почему они разные (они оба представляют одинаковые символы).Если я добавлю это к функции get_nice_column_name в фрагменте A:
puts "col_symbol is " + col_symbol.object_id.to_s + ", while :first_name is " + (:first_name).object_id.to_s
puts "col_symbol is " + col_symbol.object_id.to_s + ", while :last_name is " + (:last_name).object_id.to_s
puts "col_symbol is " + col_symbol.object_id.to_s + ", while :email is " + (:email).object_id.to_s
puts "col_symbol is " + col_symbol.object_id.to_s + ", while :given_name is " + (:given_name).object_id.to_s
, я получу это в консоли
col_symbol is 98351040, while :first_name is 1221688
col_symbol is 98351040, while :last_name is 580888
col_symbol is 98351040, while :email is 168888
col_symbol is 98351040, while :given_name is 1290648
983541040 не соответствует ни одному из {1221688, 580888168888, 1290648}.Поэтому мое get_nice_column_name бесполезно?Потому что под капотом символы разные?
Спасибо за помощь, ребята!
С уважением