我正在使用Gremlin-Scala,我有以下代码:
val paths = w.as("a").out("next").jump(
to = "a",
jumpPredicate = { t: Traverser[Vertex] =>
t.loops < 5
}
).path.toList
我不知道我的循环何时结束,所以我无法访问大小,如果我在t.loops中输入了错误的数字&gt; x然后我会有问题。我在下面更改了我的代码并且运行良好。它有两个问题(1-它是丑陋的2-我必须调用get(),我认为这是无效的) 有更好的方法吗?
val paths = w.as("a").out("next").jump(
to = "a",
jumpPredicate = { t: Traverser[Vertex] =>
t.get().out("next").size > 0
}
).path.toList
答案 0 :(得分:0)
重新解决问题:
1:它很难看 - 你究竟对它不感兴趣?你可以省去类型注释和变量名......
2:.get
没有任何低效率 - 它是遍历者获取元素的简单吸气剂。 jump
为您提供遍历器而不是元素,以便您拥有更多上下文 - 例如遍历器保存有关您到目前为止已经完成了多少循环的信息,路径等。
这应该有效:
val paths = w.as("a").out("next").jump(
"a",
_.get().out("next").size > 0
).path.toList
另一个循环示例(找到最短路径): http://www.michaelpollmeier.com/2014/12/27/gremlin-scala-shortest-path/