Что именно «<<» делает в ruby? - PullRequest
4 голосов
/ 09 февраля 2012

Я новичок в Ruby, поэтому я все еще учусь нескольким вещам.Но у меня есть хороший опыт работы с Java и C.

Я хотел бы знать, что именно это делает:

[ 'a','b', 'c' ].each_with_index {|item, index| result << [item, index] }

В частности, меня интересует <<.Некоторые исследования говорят мне, что он используется для сдвига битов, но очевидно, что здесь дело обстоит не так, так что он здесь делает?

Ответы [ 4 ]

12 голосов
/ 09 февраля 2012

В этом случае оператор << добавляет элементы в массив результатов.

Смотрите " как добавить элементы в массив ruby ​​(решено) ".

6 голосов
/ 09 февраля 2012

В Ruby все вещи, которые являются операторами в C / Java, такие как +, -, *, / и т. Д., На самом деле являются вызовами методов.Вы можете переопределить их по своему усмотрению.

class MyInteger
  def +(other)
    42 # or anything you want
  end
end

Массив определяет метод << для обозначения «поместить этот элемент в конец этого массива».Для целых чисел определено выполнение сдвига битов.

Помимо массива, многие другие классы определяют << для представления некоторой операции "добавления".

6 голосов
/ 09 февраля 2012

Это оператор добавления Array .

<< - это метод, который будет выполнять разные функции для разных классов. Массив использует его, чтобы поместить объект в конец массива. Fixnums использует его для сдвига .

4 голосов
/ 06 августа 2014

Это в основном оператор добавления.

Он использовался для добавления элемента в массив или подстроки к строке

Для массивов

1.9.2-p290: 009> arr = [1,2,3,4,5]

=> [1, 2, 3, 4, 5] 

1.9.2-p290: 010> arr << 6 </p>

=> [1, 2, 3, 4, 5, 6] 

1.9.2-p290: 011>

для строк

1.9.2-p290: 011> str = "ruby"

=> "ruby" 

1.9.2-p290: 012> str << 'rails' </p>

=> "rubyrails" 

1.9.2-p290: 013>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...