2015-08-31 2 views
0

Я использую java-gremlin, и так как большинство примеров, которые я читал в интернете, написаны в паре, я полагал, что личность трубы имеет особое значение в groovy, но я обнаружил, что он существует в java api, так что это значит?gremlin, что такое идентификатор _() pipe

ответ

3

Как описано в TinkerPop 2.x, то _() превращает произвольный объект в трубопровод:

gremlin> x = [1,2,3] 
==>1 
==>2 
==>3 
gremlin> x._().transform{it+1} 
==>2 
==>3 
==>4 
gremlin> x = g.E.has('weight', T.gt, 0.5f).toList() 
==>e[10][4-created->5] 
==>e[8][1-knows->4] 
gremlin> x.inV 
==>[StartPipe, InPipe] 
==>[StartPipe, InPipe] 
gremlin> x._().inV 
==>v[5] 
==>v[4] 

В TinkerPop 3.x, это в основном имеет тот же смысл, но мы, как правило, относятся к нему больше как начало анонимного обхода, которое не привязано к экземпляру графа. Вы можете больше узнать об этом here в недавнем посте в списке рассылки Gremlin Users. Вот как это выглядит в 3.x:

gremlin> __(1,2,3) 
==>1 
==>2 
==>3 
gremlin> __(1,2,3).map{g.V(it.get()).next()} 
==>v[1] 
==>v[2] 
==>v[3] 

Примеры его использование вкраплены в этом разделе:

http://tinkerpop.incubator.apache.org/docs/3.0.0-incubating/#graph-traversal-steps

Вы на самом деле видите это больше, чем вы думаете, что вы могли бы, как документация делает статический импорт, так что вам фактически не нужно использовать «__()». Например:

gremlin> g.V().out('knows').where(out('created')) 
==>v[4] 

действительно:

gremlin> g.V().out('knows').where(__().out('created')) 
==>v[4] 

Наконец, следует отметить, что в TinkerPop 3.x, Groovy просто "вкус" от Gremlin, который вводит маленький кусочек синтаксического сахара. Язык Гремлина в 3.x над Java 8 выглядит в основном идентичным вкусу Groovy.

http://tinkerpop.incubator.apache.org/docs/3.0.0-incubating/#_on_gremlin_language_variants

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

  • Нет связанных вопросов^_^