0

我正在使用 Gremlin-Scala,我有以下代码:

val paths = w.as("a").out("next").jump(
  to = "a",
  jumpPredicate = { t: Traverser[Vertex] =>
    t.loops < 5
  }
).path.toList

我不知道我的循环什么时候结束,所以我无法访问大小,如果我在 t.loops > x 中为 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
4

1 回答 1

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/

于 2015-01-05T02:14:36.180 回答