-4

我知道您不能在 ruby​​ 中执行嵌套方法,我想知道我可以执行以下操作:

attr_reader :dimensions

def dimensions.seprate
  [self.dimensions[0],self.dimensions[1]]
end

然后我可以像使用它一样

x,y = bar.dimensions.seprate

就像在语义上引用彼此相关的辅助方法一样。

那行得通吗?

ff 不是有办法做那个或类似的事情吗?

4

3 回答 3

0

这是一个完全有效的方法名称。然而,它不是一个有效的 Ruby 标识符。

define_method(:'dimensions.separate') do
  [dimensions[0], dimensions[1]]
end

x, y = bar.send(:'dimensions.separate')
于 2013-09-30T13:56:57.860 回答
0

Ruby 已经假设如下:

x,y = arr

意思相同:

x = arr[0]
y = arr[1]

所以我认为你不必做任何事情。换句话说:

x,y = bar.dimensions

如果“维度”的类型比数组更复杂,这可能不起作用,但它可能只需要响应 [] 方法......

于 2013-09-30T13:37:38.383 回答
0

正如我在评论中所说,我不明白具体的例子。但一般来说,如果你想做obj.meth1.meth2,那么obj.meth1必须返回一个对象,它有一个名为 的方法meth2。Ruby 中没有“上下文感知”方法,因此 的返回值meth1可能只有一个额外的方法,因为它是由obj.

于 2013-09-30T13:42:43.693 回答