2016-04-09 21 views
0

Örnek döngü olarak ayarlamadan player_1_symbol (ve player_2_symbol) iç döngüsüne nasıl erişirim? Ben herhangi bir kötü giriş için döngü çalışıyorum, bir kez ben bir new_method çağıracağım ve player_1_sembolu geçmesi gerekiyor.Bir örnek değişkeni ruby ​​kullanmadan yöntem döngüsünün içindeki değişkene erişme

def select_player_symbol(player_1, player_2) 
    loop do 
     puts "What symbol would you like #{player_1} to be?" 
     player_1_symbol = gets.chomp 

     puts "What symbol would you like #{player_2} to be?" 
     player_2_symbol = gets.chomp 

     if player_2_symbol != player_1_symbol 
     puts "player 1: #{player_1_symbol}" 
     puts "player_2: #{player_2_symbol}" 
     break 
     end 
     puts "Please pick different symbols for each player" 
    end 
    new_method{player_1, 
       player_2, 
       player_1_symbol, 
       player_2_symbol}" # How to access these last two variables 
    end 

Önceden kodum buydu ancak bunu yeniden düzenlemek istedim. "Daha" uygun yolun ne olacağından emin değilim. Ama sonra geleceği bilmek gerçekten ilgimi çekiyordu, eğer bir döngü dışında bir değişkeni çağırmak zorunda olsaydınız, bunu bir örnek yöntem olarak ayarlamadan nasıl yaparsınız? gibi döngü girmeden önce

def select_player_symbol(player_1, player_2) 
    puts "What symbol would you like #{player_1} to be?" 
    player_1_symbol = gets.chomp 

    puts "What symbol would you like #{player_2} to be?" 
    player_2_symbol = gets.chomp 

    while player_2_symbol == player_1_symbol 
     puts "#{player_1} has already picked that symbol," 
     puts "please pick another symbol." 
     player_2_symbol = gets.chomp 
    end 
    new_method{player_1, 
       player_2, 
       player_1_symbol, 
       player_2_symbol} 
    end 

cevap

2

seti it: Önerilen değişiklik ile player_1_symbol yöntemi düzeyinde kapsamlı olduğundan

def select_player_symbol(player_1, player_2) 
    player_1_symbol = nil 
    player_2_symbol = nil 
    loop do 
     ... 

bu çalışır. Kapsamı döngüden önce. Döngüyü terk ettiğinde kaybettin.

+0

Açıkçası doğru deneyin , ama belki de OP bu işleri neden olarak bir açıklama yararlanacak. –

+0

, açıklamak için yorum ekle – Mircea

-2

Bu yöntemlerin dışında tanımlayın. o HERE

$player_1_symbol = nil 
$player_2_symbol = nil 


def select_player_symbol(player_1, player_2) 
    loop do 
     puts "What symbol would you like #{player_1} to be?" 
     $player_1_symbol = gets.chomp 

     puts "What symbol would you like #{player_2} to be?" 
     $player_2_symbol = gets.chomp 

     if $player_2_symbol != $player_1_symbol 
     puts "player 1: #{$player_1_symbol}" 
     puts "player 2: #{$player_2_symbol}" 
     break 
     end 
     puts "Please pick different symbols for each player" 
    end 
end 

def another_method() 
    puts "Gloabals are still here #{$player_1_symbol} and #{$player_2_symbol}" 

end 

#lets try it 
select_player_symbol("Joe","Adam") 
another_method() 
İlgili konular