2011-06-01 129 views
0

有看起来像一个方法:方法期望对象有2个属性,但我有对象在数组中?

def some_thing(user) 
    x = user.age 
    y = user.height 
end 

我有一个对象,看起来像:

x = other.info[0] 
    y = other.info[1] 

我怎么能将此信息传递给方法SOME_THING?

some_thing(other) 

将不起作用,因为它没有以这种方式暴露的属性。

是否有可能不修改类和方法参数?

回答

2

创建一个匿名Struct创建的属性和使用Array图示,以填补他们:

some_thing(Struct.new(:age, :height).new(*other.info)) 
+0

如何将这项工作?你不像other.info [0]和other.info [1]那样引用数组? – Blankman 2011-06-01 19:49:18

+0

'other.info'是一个'Array'。当你使用'*'作为像'* other.info'这样的前缀对'Array'进行图示时,可以将数组的元素作为参数传递给方法。匿名结构初始化的地方是第一个参数是年龄,第二个参数是高度。 – bheeshmar 2011-06-01 22:42:40

+0

这是鸭打字的美丽。 :) – DGM 2011-06-02 04:56:09

相关问题