2017-02-06 2 views
0

Я работаю на случайном ролике, где нужно перевернуть 5 переменных для набора, а затем напечатать строку в зависимости от каждой переменной, но с точно такими же условиями, но все они независимы друг от друга , Затем вывод будет распечатывать список этих строк.Множественные независимые переменные случаи в Ruby

Вместо того чтобы писать:

n1 = rand(a..f)+a 
n2 = rand(a..f)+a 
... 
n5 = rand(a..f)+a 

case n1 
when a..c 
    puts x 
when d..f 
    puts y 
else 
    puts z 
end 

case n2 
when a..c 
    puts x 
when d..f 
    puts y 
else 
    puts z 
end 

... 

case n5 
when a..c 
    puts x 
when d..f 
    puts y 
else 
    puts z 
end 

Есть ли способ, чтобы написать случай как несколько независимых переменных в массиве или нечто подобное, поэтому мне нужно бы написать только условия один раз? Там может быть до 4 таких наборов, если пользователю не повезло, чтобы бросить это много, и я не хочу писать те же условия до 20 раз, так как в моей конкретной ситуации на самом деле существует 29 условий для каждый случай.

+0

написать метод для случая, а затем передать переменные методу один за другим , – engineersmnky

ответ

1

Похоже, вам просто нужно инкапсулировать логику, которую вы используете, в метод, который вы можете применять несколько раз. У вас есть упрощенный пример, но я приведу здесь несколько более убедительный пример, чтобы вы поняли правильный путь мышления:

class RollValue 
    def initialize(value) 
    @value = value 
    end 

    def message 
    case @value 
    when a..c 
     puts 'x' 
    when d..f 
     puts 'y' 
    else 
     puts 'z' 
    end 
    end 
end 

RollValue.new('b').message #=> 'x' 
+0

Это именно то, что я искал! Я применил его и проверил разные наборы, и он делает именно то, что я хочу. Большое спасибо! – nbwalsh

Смежные вопросы