在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"
吗?
答案 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')