В чем разница между :limit
и limit:
? Я предполагаю, что первым является метод ограничения размера записи в Ruby on Rails. Для чего нужен второй? Я также не знаю, в чем смысл размещения столбца n
с правой стороны.В чем разница между `: limit` и` limit: `?
ответ
Возможно, это проблема с хэш-обозначением.
рубин 1,8 и предшествующее использование стиля, как это:
method(:limit => 10)
Ruby 1.9 и более поздние есть новый стиль, который выглядит как:
method(limit: 10)
Новое обозначение намного больше похоже, что на других языках, таких как Python и JavaScript. Они функционально идентичны, хотя, как вы можете проверить с irb
, где он всегда показывает в условных обозначений:
{ test: 'value' }
# => { :test => 'value' }
Что касается вашего вопроса, как к тому, что limit
значит, это действительно зависит от того, какой метод вы передаете это в к. В контексте определения схемы он может ограничить размер поля:
t.string limit: 1024
Если это в контексте запроса может ограничить количество возвращаемых результатов. Каждый метод имеет свою собственную интерпретацию, поэтому вам нужно проконсультироваться с документацией по каждому методу, с которым вы сталкиваетесь.
:limit
- значение символа типа. Вы можете увидеть больше о символах в документах Ruby. http://ruby-doc.org/core-2.2.2/Symbol.html
limit:
является синтаксическим сахаром и может использоваться только как хэш-ключ, когда этот ключ является символом. Пример: { :limit => 10 }
- это традиционный способ. После того, как рубин 1.9.3 вы можете переписать, что, как { limit: 10 }
переменные, которые имеют двоеточие :
до их имя обличает, что они являются символами (уникальный идентификатор), и это означает, что можно сделать следующее:
symbol = :limit
через двоеточие после имени, как правило, означает для обозначения хэш-ключа, например, следующее:
hash = { limit: 5 }
puts hash[:limit] # returns 5
путаница часто наступает при работе с более старыми версиями рубин, где хэши записываются в виде следует:
hash = { :limit => 5 }
puts hash[:limit] # returns 5
Что имеет такое же точное значение, как указано выше.
спасибо, я думал, что это не то же самое. – pradeek