【发布时间】:2016-02-09 23:57:24
【问题描述】:
我最近问了一个问题 (Equality test on three or more objects),我试图确定一种优雅的方式来对一组 3 个或更多对象运行相等测试。一个解决方案原来是这样的:
array = [1,1,1,1]
array.all? {|x| x == array.first }
我想知道是否可以将其减少到仅一行,以便我可以做一些会被解释为这样的事情:
[1,1,1,1].all? {|x| x == [1,1,1,1].first }
#=> true
我能够以某种方式引用块调用的初始对象,而无需首先在前一行中声明该对象。在伪代码中,我想做的是这样的:
[1,1,1,1].all? {|x| x == object_being_called_on_by_block.first }
#=> true
我也试过这个,但没用:
[1,1,1,1].all? { |x| x == self.first }
【问题讨论】: