2014-10-08 4 views
0

всего n00b здесь, когда речь заходит о Гремлине, но кто-то не мог бы сказать мне разницу между «преобразованием» и «sideEffect»? Я читал Gremlin Docs, и оба кажутся «время от времени», вводят данные, массируют данные и производят выходные данные.Gremlin Какая разница между transform и sideEffect

Я думал, что я был на что-то, когда это выглядело так, будто «превращения» были в основном «геттерами», но тогда почему его называли «трансформировать»? И затем я увидел, что они поставили функции под преобразованием, которые сделали намного больше, чем просто получить данные.

Любая помощь приветствуется, спасибо заранее!

ответ

2

A transform ведет себя как функция карты, где значение в Gremlin трубопровода буквально tranformed другое значение:

gremlin> g.V.transform{it.name} 
==>marko 
==>vadas 
==>lop 
==>josh 
==>ripple 
==>peter 

Обратите внимание, что в приведенном выше примере, мы перешли от Vertex до transform шаг до строкового значения свойства name на этом Vertex. Теперь посмотрим, что происходит с sideEffect:

gremlin> g.V.sideEffect{it.name} 
==>v[1] 
==>v[2] 
==>v[3] 
==>v[4] 
==>v[5] 
==>v[6] 

The Vertex пропуска через sideEffect без изменений (т.е. он выходит из sideEffect как Vertex, так же, как он вошел в). Точка sideEffect состоит в том, что вы можете сделать что-то на этом этапе конвейера, который «что-то» не имеет отношения к обработке самого конвейера. Другими словами, возвращаемое значение закрытия sideEffect в основном игнорируется.

+0

Stephen, это отличный ответ. Я особенно ценю то, как вы объяснили, что происходит во время sideEffect. Большое спасибо. – crawdaddy18

+0

Как один конвейер возвращает один объект, содержащий конечную вершину и какие-либо побочные эффекты, накопленные ранее? –

+0

от «end vertex», вы имеете в виду последний проход через трубу? и «одним объектом» вы имеете в виду как List, например: '[lastVertex, sideEffect]'? –

Смежные вопросы