values()的奇怪行为

时间:2018-10-28 21:42:11

标签: gremlin

在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"吗?

1 个答案:

答案 0 :(得分:2)

Vertex.values()步骤中严格说说sideEffect()的API和用法,您正在得到您想要的东西,因为values()返回了Iterator-请参见{ {3}}。您需要改为:

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

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

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

或更妙的是,避免使用闭包/ sideEffect()并执行以下操作:

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