2014-12-29 34 views
0

我使用小鬼 - 斯卡拉的大小,我有以下代码:Tinkerpop3跳不知道循环

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

我不知道什么时候我的循环将结束,所以我要的大小没有访问如果我在t.loops> x中输入了错误的数字,那么我将遇到问题。我改变了我的代码,并且效果很好。它有两个问题(1 - 它很丑 - 我必须调用get(),我认为这是不高效的) 有没有更好的方法来做到这一点?

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

回答

0

回复您的问题:

1:它是丑陋的 - 究竟是什么你不喜欢吗?你可以省略类型注释和变量名...

2:没有什么低效的.get那里 - 它是一个简单的getter在移动器上获取元素。 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/