2014-12-29 32 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/