Зачем использовать () в качестве хэша?

#ruby

#ruby

Вопрос:

Я видел некоторый хэш, подобный следующему, в каком-то файле конфигурации .rb

 cache( :path => "#{currentDir}/cache" )
  

почему не использовать {}?

Ответ №1:

кэш — это метод, синтаксис которого подобен

       method( a => b , c => d )
  

является сокращением (синтаксический сахар) для

        method({ a => b , c => d})
  

Ответ №2:

В ruby, если единственным аргументом метода является хэш, используются фигурные скобки.

отредактируйте, чтобы прояснить это: cache() это метод, который принимает хэш в качестве аргумента, вероятно, такой:

 def cache(*args)
   # ...
end
  

Комментарии:

1. Ну, потому что это не имеет смысла. Фигурные скобки предназначены для инкапсуляции ключей и значений хэша. В этом примере у вас есть только фигурные скобки вокруг значения.

2. Это работает не только в том случае, если хэш является единственным аргументом. Если последним аргументом является хэш, вы можете оставить фигурные скобки. Также подпись была бы больше похожа на def cache(opts = {}) , по крайней мере, в Rails.