Я пытаюсь решить, что должно быть очень простой проблемой в Ruby.Моя цель - взять следующий хеш, распечатать значения и ключи, используя циклы for и метод .each.
my_stocks = { 'Apple' => { 'symbol' => 'AAPL', 'price' => 100 },
'Google' => { 'symbol' => 'GOOG', 'price' => 1150 },
'Tesla' => { 'symbol' => 'TSLA', 'price' => 295 },
'Microsoft' => { 'symbol' => 'MSFT', 'price' => 95},
'Netflix' => { 'symbol' => 'NFLX', 'price' => 300},
'Facebook' => { 'symbol' => 'FB', 'price' => 175},
'Amazon' => { 'symbol' => 'AMZN', 'price' => 1250} }
Итак, я использую этот определенный метод для печати всего хеша:
def execute_exercise(my_stocks)
for i, j in my_stocks
puts j
end
end
Очевидно, это удается.Далее я пытаюсь использовать цикл for для печати только тех значений ключей, которые превышают 500.
Каждое решение, с которым я столкнулся, вызывает ошибку в Ruby:
rbtest.rb:18:in `>': no implicit conversion of Fixnum into Hash (TypeError)
from rbtest.rb:18:in `block in execute_exercise'
from rbtest.rb:18:in `each'
from rbtest.rb:18:in `execute_exercise'
from rbtest.rb:25:in `<main>'
Я предпринял следующие попытки:
my_stocks.each {|symbol,price| puts symbol if price > 500}
for q, e in my_stocks.to_i < 500
puts e
end
Я ожидаю, что значения будут напечатаны из хэша, но очевидно, что я что-то здесь упускаю.Я не могу преобразовать fixnum в хеш без .to_h
, но это даже работает?Я просто неправильно понимаю петли или это что-то еще?