2013-12-18 51 views
0

我有一個接受兩個對象的方法。其中一點是@from_point,另一個是@to_point。我有一個方法(get_from_point),其選擇必須是from_point我怎麼可以指定@to_point如果我已經知道(point_one,point_two)的哪一個點是@from_point如何在紅寶石中創建對象的交叉點

def initialize(point_one, point_two) 
    @from_point = get_from_point(point_one, point_two) 
    @to_point = ??? 
end 
+2

燦你向我們展示'get_from_point'代碼? – dusan

回答

0

使用Array#uniq

def initialize(point_one, point_two) 
    @from_point,@to_point = [get_from_point(point_one, point_two),point_one, point_two].uniq 
end 

下面是一些測試:

x,y = [2,1,2].uniq 
x # => 2 
y # => 1 
x,y = [1,1,2].uniq 
x # => 1 
y # => 2 
+0

這真的很棒! – user2128702

+0

糾正我,如果我錯了,但那不行,對吧?你只能做Array - Array,即使如此,結果將是一個數組而不是一個點。 – mechanicalfish

+0

@mechanicalfish你說得對,那是我的錯 –

1

你可以這樣做:

@to_point = @from_point == point_one ? point_two : point_one 

但我建議重構你的方法,無論是從和這樣你就可以做到這一點返回:

@from_point, @to_point = get_from_and_to_points(point_one, point_two) 
0
@to_point = [point_one, point_two].delete(@from_point).first 
0

無條件...

@from_point = get_from_point(point_one, point_two) 
@to_point = (point_one + point_two) - @from_point