我正在使用java-gremlin,因为我在互联网上阅读的大部分例子都是用groovy编写的,我认为身份管道在groovy中有特殊含义,但我发现它存在于java api中,那么是什么呢这意味着什么?
答案 0 :(得分:2)
如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中,它基本上具有相同的含义,但我们倾向于将其更多地称为匿名遍历的开始,一个未绑定到图形实例的开始。您可以在Gremlin Users邮件列表的最新帖子中阅读有关here的更多信息。以下是它在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 over Java 8中的Gremlin语言看起来与Groovy风格大致相同。
http://tinkerpop.incubator.apache.org/docs/3.0.0-incubating/#_on_gremlin_language_variants
答案 1 :(得分:0)
无法确切告诉您它带来的价值,但是看起来它只是在映射自身。
“ identity()-step(map)是一个将当前对象映射到自身的身份函数。”
http://tinkerpop.apache.org/docs/current/reference/#identity-step