我注意到在Tinkerpop Gremlin 3.3中的一些步骤函数中使用了双下划线。有人可以告诉我们为什么我们使用这个双下划线的例子吗?我在文档中找不到足够的相关信息。
答案 0 :(得分:6)
__.
允许您定义匿名Traversal
,即。 Traversal
未绑定到特定TraversalSource
。
在Gremlin控制台中,所有Gremlin步骤都是静态导入的,因此您永远不需要使用__.
作为匿名遍历的前缀,除非匿名遍历以目标语言中的保留关键字开头。在Groovy中,这是默认的Gremlin风格,in()
和as()
步骤就是这种情况:因为这些是保留关键字,这两个步骤必须以__.
为前缀
在Java中,您可以通过静态导入程序中的所有步骤来避免__.
前缀:
import static org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__
请参阅文档中的小注意部分:http://tinkerpop.apache.org/docs/3.3.0/reference/#graph-traversal-steps
答案 1 :(得分:0)
__用于引用Java API中的传入遍历(顶点或边)。例如:在gremlin shell中,可以编写类似这样的内容
graph.traversal().V().repeat(out("edgeType")).until(hasLabel("label")).toList()
但在java中,需要一个匿名遍历来调用函数“out”和“hasLabel”重复并直到(或任何其他函数,如by,选择等)。 Java中的上述遍历将如下所示:
graph.traversal().V().repeat(__.out("edgeType")).until(__.hasLabel("label")).toList()