我知道您不能在 ruby 中执行嵌套方法,我想知道我可以执行以下操作:
attr_reader :dimensions
def dimensions.seprate
[self.dimensions[0],self.dimensions[1]]
end
然后我可以像使用它一样
x,y = bar.dimensions.seprate
就像在语义上引用彼此相关的辅助方法一样。
那行得通吗?
ff 不是有办法做那个或类似的事情吗?
这是一个完全有效的方法名称。然而,它不是一个有效的 Ruby 标识符。
define_method(:'dimensions.separate') do
[dimensions[0], dimensions[1]]
end
x, y = bar.send(:'dimensions.separate')
Ruby 已经假设如下:
x,y = arr
意思相同:
x = arr[0]
y = arr[1]
所以我认为你不必做任何事情。换句话说:
x,y = bar.dimensions
如果“维度”的类型比数组更复杂,这可能不起作用,但它可能只需要响应 [] 方法......
正如我在评论中所说,我不明白具体的例子。但一般来说,如果你想做obj.meth1.meth2
,那么obj.meth1
必须返回一个对象,它有一个名为 的方法meth2
。Ruby 中没有“上下文感知”方法,因此 的返回值meth1
可能只有一个额外的方法,因为它是由obj
.