Есть ли учебник, который обучает распространенным идиомам программирования на Ruby, используемым опытными программистами, но не может быть очевидным для новичков? [закрыто]

== и .Equals зависят от поведения, определенного в фактическом типе и фактическом типе на сайте вызова. Оба являются просто методами / операторами, которые могут быть переопределены на любом типе и заданы любым поведением, которое автор так желает. По моему опыту, я считаю, что люди обычно реализуют .Equals на объекте, но пренебрегают имплементацией оператора ==. Это означает, что .Equals будет фактически измерять равенство значений, а == будет измерять, являются ли они одной и той же ссылкой.

Когда я работаю с новым типом, определение которого в потоке или написанием общих алгоритмов, я считаю, что наилучшей практикой является следующий

  • Если я хочу сравнить ссылки в C # я использую Object.ReferenceEquals напрямую (не требуется в общем случае)
  • Если я хочу сравнивать значения, я использую EqualityComparer.Default

. В некоторых случаях, когда Я чувствую, что использование == неоднозначно. Я явно использую Object.Reference в коде для удаления двусмысленности.

Эрик Липперт недавно сделал сообщение в блоге по вопросу о том, почему существует 2 метода равенство в CLR. Это стоит прочитать

30
задан Will 9 August 2013 в 13:34
поделиться

8 ответов

Идиомы Ruby (первоначально от RubyGarden) моя обычная ссылка для идиом. Это ясно организовано и довольно завершено. Как автор говорит, это от RubyGarden, который раньше был действительно классный (спасибо Wayback Machine ). Но теперь, кажется, в режиме офлайн .

12
ответ дан jfs 10 August 2013 в 00:34
поделиться
  • 1
    Библиотека Base64 для представления данных в 256 основах (т.е. буквы, символы и числа) в основе 64. Корреспондент надеется представить числа в основе 10 (люди чисел используют) в основе 64 и наоборот. – CharlesTWall3 31 December 2014 в 04:03

Вот слайд-шоу: Идиоматический Ruby.

Выборка:

' until' работы как' while not'

  x = x * 2 until x > 100
9
ответ дан the Tin Man 9 August 2013 в 13:34
поделиться
  • 1
    @callum: Base64 является способом представить число в основании 64 формы. Единственной разницей являются символы you' ve выбран для каждого значения. – Mooing Duck 27 September 2014 в 16:02

В то время как не непосредственно учебное руководство, вот блог, который Вы найдете по теме

http://its.arubything.com/

3
ответ дан Jeff 9 August 2013 в 13:34
поделиться
  • 1
    Я никогда не могу понимать, почему люди отправляют ответы, в которых говорится " ответы на этот вопрос отвечают на Ваш question" вместо того, чтобы голосовать/отмечать дубликаты. – Andy E 2 June 2011 в 11:30

Я предложил бы постоянного классика: , Почему Острое руководство

, Это - и введение в Ruby и расследование Ruby Путь.

6
ответ дан Toby Hede 10 August 2013 в 00:34
поделиться
  • 1
    Аналогичные решения не равняются дублирующимся вопросам. Как довольно банальный пример: " answer" к " сердечный клапан replacement" может быть " откройте основу surgery" который может также быть " answer" к " основа transplant". это не означает, что вопросами является то же. – Femi 4 June 2011 в 04:23

Исполняемое руководство по пониманию закрытий Ruby, closures-in-ruby.rb.

1
ответ дан Otto 10 August 2013 в 00:34
поделиться
  • 1
    можно проверить это решение дважды таким образом: Buffer.from (Buffer.from ([i> > 24, i> > 16, i> > 8, i]) .toString (' base64'), ' base64') .readInt32BE (0) – Claudio Bertozzi 14 April 2017 в 20:17

Как насчет скромная небольшая книжная

выборка Ruby г-на Neigborly:

IO.foreach("textfile.txt") {|line| puts line }
3
ответ дан assplecake 10 August 2013 в 00:34
поделиться

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

4
ответ дан Lolindrath 10 August 2013 в 00:34
поделиться
  • 1
    Нет, я don' t хотят закодировать двоичные данные " Base64" я хочу представить число в основании 64 формы. Посмотрите на мой вопрос снова. – callum 3 June 2011 в 20:20

Я недавно нашел этот блог. Я еще не очень разбирался в этом, и пара сообщений, которые я прочитал, были немного ориентированы на новичков. YMMV

http://blog.rubybestpractices.com/

1
ответ дан 28 November 2019 в 00:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: