Предположим, я хочу получить первое число внутри массива, которое появляется в нем только один раз.Обратитесь к объекту вызывающего объекта внутри блока перечислимого метода
Таким образом, как правило, я хотел бы сделать это следующим образом:
arr = [1,1,2,2,3,4,4]
arr.detect { |elem| arr.count(elem) == 1 } # => 3
Я задавался вопросом, возможно ли, чтобы получить массив без необходимости предварительно присвоить его переменной, как-то вроде этого:
[1,1,2,2,3,4,4].detect { |elem| self.count(elem) == 1 } # => NoMethodError
Это, конечно же, не работает, потому что self
в приведенном выше обращении ссылается на Object
.
Итак, возможно ли каким-либо образом обратиться к объекту, по которому в его блоке был вызван перечислимый метод, как в примере выше?
Я хотел бы сделать это таким образом: 'arr.group_by (&: to_i) .detect {| _, л | l.size == 1} [0] '. – Hauleth