Странное поведение значений () - PullRequest
0 голосов
/ 29 октября 2018

В консоли 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 голосов
/ 29 октября 2018

Строго говоря, с API и использованием Vertex.values() на шаге sideEffect(), вы получаете именно то, что просили, потому что values() возвращает Iterator - см. javadocs . Вам нужно вместо этого сделать:

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

или лучше (при условии, что «имя» не является мультисвойством):

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

или, что еще лучше, избегайте закрытия / sideEffect() и просто сделайте:

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