Ruby에서 매크로를 사용할 수 없다는 것을 알고 있지만, 해결 방법을 모르는 상황이 발생했습니다.Ruby 매크로 텍스트 대체
나는 거의 동일한 두 가지 방법이 있으며 두 변수 이름 만 다릅니다. 특히, |n|
과 |m|
을 외부 및 내부 upto
루프로 바꿨습니다. I는 전체 "X"값의 완전한 행에 대한 5 × 5 빙고 보드 의하면있어 첫 번째 방법, 및 "X"값의 전체 열의 두 번째 방법에서는 검사
def self.check_across
0.upto(4) do |n|
test = 0
0.upto(4) { |m| if @@bingo_board[n][m] == "X" then test += 1 end }
if test == 5 then return true end
end
return false
end
def self.check_down
0.upto(4) do |m|
test = 0
0.upto(4) { |n| if @@bingo_board[n][m] == "X" then test += 1 end }
if test == 5 then return true end
end
return false
end
.
나는 SAS에서이 방법을 %macro
으로 감쌀 수 있음을 알고 있습니다. 루비, 나는이 작동하지 않습니다 알아,하지만 난 할 노력하고있어 이것이다 :
def self.check(x, y)
0.upto(4) do |x|
test = 0
0.upto(4) { |y| if @@bingo_board[n][m] == "X" then test += 1 end }
if test == 5 then return true end
end
return false
end
example.check(n, m) # same as .check_across
example.check(m, n) # same as .check_down
물론,이 n
때문에 작동하지 않고 m
외부에 존재하는 변수 이름으로 간주 될 것이다 방법의.
당신은'define_method'를 사용할 수 있지만, 추상화 할 필요가있는 것은'@@ bingo_board [n] [m]'을 검색하는 것입니다. 그래서 정말 args를 뒤집는 두 개의 작은 메소드가 필요합니다 , 그리고 루프와 테스트를 수행하는 더 큰 방법. 또는 두 개의 간단한 람다를 루프/테스트 메서드에 전달할 수 있습니다 (아마 내 환경 설정,하지만 그 방법을 롤백). –