В ruby ​​есть подробная документация / информация о том, как «<<» можно и нужно использовать (см. Пример ниже) - PullRequest
1 голос
/ 09 июня 2010
    # use a YML file, which has key , value pairs
    yml_hosts = YAML::load(File.open('hosts.yml'))

      .....
     # for each pair
     yml_hosts.each_pair {|key_hosts , value_hosts|

       ......

     redirect to a String "value_hosts"

         value_hosts << "#{$.} #{line}" if line =~ /recoverable NFE/

Есть ли лучший способ сделать это, так как я использую условие:

if ! value_hosts.empty?
   to do an action, like sending email, etc
   but value_hosts is never Empty
    so i always get an email, even though, i ONLY want top get an email, if

line =~ /recoverable NFE/

Ответы [ 3 ]

1 голос
/ 09 июня 2010

Это просто метод, который обычно используется для добавления данных к вызывающей стороне, будь то добавление нового элемента в массив или добавление нового текста в строку.

Может быть, вы спрашиваете, как этоуместно использовать его для соответствия «Ruby Way».

Я использую его только при добавлении объекта в коллекцию (массив).


В вашем примере кода вы можете заменитьэто выражение:

! value_hosts.empty?

с чем-то вроде

value_hosts.mailable?

и определение правила в методе mailable?.

1 голос
/ 09 июня 2010

Зависит от класса.Посмотрите на документы, чтобы понять, как их использовать.

Вот для Строка и Массив классов.

Кроме того, незабудьте, что вы можете перезаписать операторы <<, если считаете, что реализация не подходит для ваших целей. </p>

0 голосов
/ 09 июня 2010

<< - это просто еще один метод. </p>

a << 4

совпадает с

a.<<(4)

Он определяется и выполняется и оценивается так же, как и любой другой метод. Делай как хочешь.

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