Может ли кто-нибудь объяснить мне, почему в консоли ruby (версия 2.3.4) пытается распечатать хэши эти работы:
puts({a: 'a', b: 'b'})
puts(a: 'a', b: 'b')
puts a: 'a', b: 'b'
puts [a: 'a', b: 'b'] <<< array length 1 with value of hash
puts Hash[a: 'a', b: 'b']
, но ни одна из этих работ:
puts {a: 'a', b: 'b'}
puts {:a => 'a', :b => 'b'}
puts{:a => 'a', :b => 'b'}
даетошибка:
синтаксическая ошибка, неожиданный ',', ожидание '}'
ставит {a: 'a', b: 'b'}
__ _ _ _ _ ^
И эти:
puts {:a => 'a'}
puts {a: 'a'}
puts{a: 'a'}
также ошибка с:
синтаксическая ошибка, неожиданная =>, ожидающая '}'
ставит {: a =>' a '}
_ _ _ _ _ ^
Насколько я понимаю (), функции были полностью необязательными ив соответствии со стилевыми предпочтениями разработчика.
И то, что {} вокруг хэшей было в основном необязательным, но никогда не требовалось НЕ использовать.
Я мог бы понять, если интерпретатор был перепутан между 1 или 2 хэшами(так как для put требуется более 1 аргумента), но он просто умирает.
Что еще хуже: это работает:
puts({a: 'a', b: 'b'}, [:d, :e])
puts ({a: 'a', b: 'b'})
, но это не так:
puts ({a: 'a', b: 'b'}, [:d, :e])
puts (Hash[a: 'a', b: 'b'], [:d, :e])
Может кто-нибудь объяснить, что на самом деле происходит позадисцены?