2017-02-06 1 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 

배열 또는 이와 유사한 여러 독립 변수로 케이스를 작성하는 방법 내가 한 번만 조건을 작성해야 것이 있습니까? 사용자가 많은 것을 굴리기에 불충분하고 최대 20 번 같은 조건을 작성하고 싶지 않은 경우이 세트 중 최대 4 개가있을 수 있습니다. 특정 상황에서와 같이 실제로 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