2013-07-27 5 views
1

Я хотел бы передать эти два хэша в качестве параметров вершинному методу, но Ruby ему не нравится. Размещение {} вокруг каждого параметра hash также не работает.Передача сложного хэша в качестве параметров

vertex search_for_key: { id: '10' }, get_fields: { fullname: :full_name } 

Это прекрасно работает, но я хотел бы в одной строке:

search = {search_for_key: { id: '10' }} 
fields = {get_fields: { fullname: :full_name }} 

vertex search, fields 

Что мне не хватает?

ответ

2

Это решение:

vertex({search_for_key: { id: '10' }}, {get_fields: { fullname: :full_name }}) 
+0

Спасибо, что работает. Я надеялся избежать всего синтаксического шума. Есть ли лучший способ приблизиться к этому, чтобы код был намного чище? – IUnknown

+0

@IUnknown Не удерживая все на одной линии. –

2

Добавить еще фигурные скобки, а также круглые скобки:

vertex({search_for_key: { id: '10' }}, {get_fields: { fullname: :full_name }}) 
3
vertex search_for_key: { id: '10' }, get_fields: { fullname: :full_name } 

будет расширяться в vertex с одним хэшем в качестве аргумента. Это так же, как это:

vertex({search_for_key: { id: '10' }, get_fields: { fullname: :full_name }}) 

Поскольку вы ожидаете два аргумента для vertex, он не работает.

+2

+1 Для объяснения, почему то, что ОП уже не работает. Но -1 для того, чтобы фактически не дать решение. Но достаточно, чтобы прийти к решению в любом случае, я полагаю, так что +1 в любом случае. –