Недавно я обнаружил, что tap может использоваться для "сухого" назначения значений новым переменным; например, для создания и заполнения массива, например:
array = [].tap { |ary| ary << 5 if something }
Этот код нажимает 5 на array, если something правдиво; в противном случае array останется пустым.
Но я не понимаю, почему после выполнения этого кода:
array = [].tap { |ary| ary += [5] if something }
array остается пустым. Кто-нибудь может мне помочь?