Bir dama programını yeniden düzenliyorum ve bir oyuncu taşıma isteğini (örneğin "3, 3, 5, 5" biçiminde) bir int olarak işlemeye çalışıyorum dizi. Aşağıdaki yöntemi var ama olması gerektiği bildiği gibi bu Ruby benzeri olarak hissetmez:Refactoring Ruby: Dize dizisini int dizisine dönüştürme
def translate_move_request_to_coordinates(move_request)
return_array = []
coords_array = move_request.chomp.split(',')
coords_array.each_with_index do |i, x|
return_array[x] = i.to_i
end
return_array
end
onunla aşağıdaki RSpec test var.
it "translates a move request string into an array of coordinates" do
player_input = "3, 3, 5, 5"
translated_array = @game.translate_move_request_to_coordinates(player_input)
translated_array.should == [3, 3, 5, 5]
end
Test geçiyor, ancak kodun oldukça çirkin olduğunu düşünüyorum. Herhangi bir yardım takdir edilecektir. Teşekkürler.
Steve
move_request.split stackoverflow sonrası bir göz Lütfen ("") haritası. (&: To_i) – tokland
1: Ben bilmiyordum. Kitapçığın "The Book.to_proc Trick" bölümündeki "Pragmatik Kitaplık" bölümünden (http://pragprog.com/) "Programlama Ruby 1.9" kitabında ilginç bir açıklaması var (sayfa 4, 4, baskı, Mayıs 2011). – lkuty