Ответ 1
Ваш первый пример работает, потому что Ruby разрушит аргументы блока. См. Статью для получения дополнительной информации о деструкции в рубине.
settings = [ ['127.0.0.1', 80], ['0.0.0.0', 443] ]
Как я могу сделать:
settings.each do |ip, port|
...
end
Вместо:
settings.each do |config|
ip, port = *config
...
end
Ваш первый пример работает, потому что Ruby разрушит аргументы блока. См. Статью для получения дополнительной информации о деструкции в рубине.
Метод, который вы ищете, это массив # map
settings = [ ['127.0.0.1', 80], ['0.0.0.0', 443] ]
settings.map { |ip, port| puts "IP: #{ip} PORT: #{port}" }
который вернется
#//= > IP: 127.0.0.1 ПОРТ: 80
#//= > IP: 0.0.0.0 PORT: 443