Класс DefaultGraphTraversal ‹S, E› какова цель класса? а что представляют собой классы S и E?

Не могли понять из документации и исходного кода, что они представляют?

http://tinkerpop.apache.org/javadocs/3.2.5/full/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/DefaultGraphTraversal.html


person Karnimrod    schedule 22.01.2018    source источник


Ответы (1)


В Apache TinkerPop / Gremlin обход аналогичен запросу, и запрос может возвращать не только вершины.

<S,E> - это переменные типа, которые образуют универсальное определение Java для DefaultGraphTraversal класс. Они не являются конкретными классами, но представляют типы «начало» (для S) и «конец» (для E), которые будут входить в обход и выходить из него соответственно. В некотором смысле эти типы определяются, когда вы формируете обход, который хотите выполнить. g.V().count() возвращает GraphTraversal<Vertex,Long>, где S определен как Vertex, а E определен как Long - начало обхода - это Vertex, а конец обхода - Long.

person stephen mallette    schedule 22.01.2018
comment
Спасибо @stephen mallette за ответ. Я знаю, что такое Java Generics, я понимаю, почему это сбивает с толку, поэтому обновил вопрос. Согласно википедии, я все еще не понимаю значение концепции обхода - обход графа относится к процессу посещения каждой вершины в графе. Я могу понять, зачем вам нужен начальный класс, но почему конечный класс из другого типа? разве конец не означает последнюю вершину в обходе? - person Karnimrod; 22.01.2018
comment
В Apache TinkerPop / Gremlin Traversal аналогичен запросу, и запрос может возвращать не только вершины. Итак, GraphTraversal<Vertex,Long> для g.V().count() начинается с вершин графа, но в конечном итоге на выходе будет значение Long, потому что вам нужно count() этих вершин. Считайте E результатом запроса. - person stephen mallette; 22.01.2018
comment
Еще раз спасибо @stephen mallette, последний комментарий действительно прояснил для меня некоторые вещи. - person Karnimrod; 22.01.2018