2017-02-18 3 views
0

Как вытащить значения из массива, как вы делаете с .map? Вот мой код:Как получить последние элементы массива в Ruby?

counter = 0 
ary = Array.new 

puts "How many teams do you have to enter?" 
hm = gets.to_i 

until counter == hm do 
    puts "Team City" 
    city = gets.chomp 

    puts "Team Name" 
    team = gets.chomp 

    ary.push([city, team]) 
    counter += 1 
end 

ary.map { |x, y| 
    puts "City: #{x} | Team: #{y}" 
} 

print "The last team entered was: " 
ary.last 

Конечный результат выглядит следующим образом:

City: Boston | Team: Bruins 
City: Toronto | Team: Maple Leafs 
The last team entered was: 
=> ["Toronto", "Maple Leafs"] 

Но я хочу, чтобы последняя строка читать

The last team entered was: Toronto Maple Leafs 

Как я могу получить мои ценности в этой линии без =>, скобки и кавычки?

ответ

0

Используйте печать вместо пут, когда вы не хотите новую линию символ в конце строки, например, при получении пользовательского ввода, кроме того, можно также использовать #{variable} для печати в пределах одной и той же линии, используя пут:

counter = 0 
ary = Array.new 

print "How many teams do you have to enter? " 
hm = gets.to_i 

until counter == hm do 
    print "Team #{counter + 1} City: " 
    city = gets.chomp 

    print "Team #{counter + 1} Name: " 
    team = gets.chomp 

    ary.push([city, team]) 
    counter += 1 
end 

ary.map { |x, y| puts "City: #{x} | Team: #{y}" } 

puts "The last team entered was: #{ary.last.join(' ')}" 

пример:

How many teams do you have to enter? 2 
Team 1 City: Boston 
Team 1 Name: Bruins 
Team 2 City: Toronto 
Team 2 Name: Maple Leafs 
City: Boston | Team: Bruins 
City: Toronto | Team: Maple Leafs 
The last team entered was: Toronto Maple Leafs 

Попробуйте here!

+0

Сначала я все «Nawwww мне нравится мой формат», то я попробовал ваш и о да это wayyyy лучше. Дерьмо, мол! Я просто изучаю Ruby, и это здорово. Благодаря! – ComputerUser5243

+0

'ary.map {| x, y | puts "Город: # {x} | Команда: # {y}"} 'злоупотребляет' map', 'each' iterator ** должен использоваться там **. – mudasobwa

3

В принципе, Ваш вопрос «как соединить элементы массива строк в одну строку,» и Array#join приходит на помощь:

["Toronto", "Maple Leafs"].join(' ') 
#⇒ "Toronto Maple Leafs" 
0

Попробуйте:

team_last = ary.last 
puts "The last team entered was:" + team_last[0] + team_last[1] 
+0

Вы когда-нибудь читали вопрос или отвечали напрямую на заголовки? – mudasobwa

+0

Owh, извините. Надеюсь, это поможет – Reckordp

+0

Это неправильный код ruby. – mudasobwa

1

Альтернативный способ с *:

puts ["Toronto", "Maple Leafs"] * ', ' 
#Toronto, Maple Leafs 
#=> nil 

Но я не думаю, что кто-то использует эту запись, так рекомендуется в другом ответе использовать join.

0

В соответствии с вашим кодом ary.last сами возвращают массив таким образом первым вы должны преобразовать его в строку путем объединения двух элементов в массиве с помощью ary.last.join(' '), а затем вам придется интерполировать его строку Вашего сообщения т.е. "The last team entered was: #{ary.last.join(' ')}"

последние две строки кода изменится на:

print "The last team entered was: #{ary.last.join(' ')}" 
Смежные вопросы