首页 > 解决方案 > values() 的奇怪行为

问题描述

在 Gremlin 控制台中,我看到以下内容:

1) 设置

graph = TinkerGraph.open()
g = graph.traversal()

2) 插入

g.addV('mylabel').property(id, 1).property('name', 'myname').next()

3)这很好用:

g.V(1).values('name')
==>myname // as expected

3)这反而会产生意想不到的结果

g.V().sideEffect{println it.get().values('name')}
org.apache.tinkerpop.gremlin.util.iterator.IteratorUtils$3@12a14b74 // expected: "myname"

it.get()应该是顶点并且values('name')"myname"

标签: gremlin

解决方案


严格说 API 和一步的用法Vertex.values()sideEffect()你得到的正是你所要求的,因为values()返回了一个Iterator-see javadocs。您需要改为:

g.V().sideEffect{println it.get().values('name').next()}

或更好(假设“名称”不是多属性):

g.V().sideEffect{println it.get().value('name')}

或者更好的是,避免关闭/ sideEffect(),只需执行以下操作:

g.V().values('name')

推荐阅读