我想在Ruby中使用塊,我有這樣的代碼:如何在Ruby中使用與塊
def positions
return horizontally_position if orientation == "horizontally"
vertically_position
end
def horizontally_position
res = []
for x in position[0]..end_coord(0)
res << [x, position[1]]
end
return res
end
def vertically_position
res = []
for y in position[1]..end_coord(1)
res << [position[0], y]
end
return res
end
似乎有重複的代碼,並且希望使用一個塊或一個產量提高性能,但不知道如何!
這樣做:
def positions
return h_v_position(0, {[x, position[1]]}) if orientation == "horizontally"
h_v_position(1, {[position[0], y]})
end
def h_v_positions(coord, &block)
res = []
for x in position[coord]..end_coord(coord)
res << block.call
end
return res
end
但沒有工作..有沒有幫助?
如果我要解釋這個權利,我覺得強似塊,你只是想通過陣列'[X,位置[1]'或'[位置[0],Y]'。另外,在Ruby中使用塊時,可以像傳遞參數那樣傳遞參數,但在方法內部,您可以使用'block.call'調用塊。但是,塊是塊。它們就是那些用來傳遞特定參數給使用方法的'{stuff in here}'。但是,就你而言,它看起來像是將數組中的信息傳遞給另一個名爲'res'的數組,並將其返回。 –
謝謝你,我找到了解決方案,我會在幾分鐘後發佈。 –