だから、私は(gremlin-scala
から)この機能as
を呼び出しています:シェイプレスとグレムリンスカラ: `as 'の呼び出しの結果をどうやって返すのですか?
case class GremlinScala[End, Labels <: HList](traversal: GraphTraversal[_, End]) {
def as(name: String, moreNames: String*)(implicit p: Prepend[Labels, End :: HNil]) =
GremlinScala[End, p.Out](traversal.as(name, moreNames: _*))
}
それは、ここで定義されていますhttps://github.com/mpollmeier/gremlin-scala/blob/master/gremlin-scala/src/main/scala/gremlin/scala/GremlinScala.scala#L239
それは私が、私は理解して確認していない暗黙の前に付加引数を取ります。私はgremlin-scala
がクエリのどの点を追跡するかを追跡するためにHListを使用することを知っています。が呼び出され、後でselect
が呼び出されたときに、それが返されるトラバーサルのポイントが分かります。
これはキーです:as
がそのHListに追加されます。場合によっては、明らかに前に付いています。
これは一般的なコードで正常に動作しますが、今はas
を呼び出してその結果を返します。これは私が立ち往生している場所です:この関数の戻り値の署名は何ですか?
最後に、私の関数に暗黙的なparamを追加しましたが、私はちょうどレベルまで問題を追いかけることを恐れています。ここに私がこれまで持っているものがあります:
case class AsOperation[A, In <: HList](step: String) extends Operation {
def operate(g: GremlinScala[A, In]) (implicit p: Prepend[In, ::[A, HNil]]): GremlinScala[A, p.Out] = {
g.as(step)
}
}
これはコンパイルされますが、私はまだこの機能を使用できません!私はそれを呼び出すたびに、それは
could not find implicit value for parameter p: shapeless.ops.hlist.Prepend[In,shapeless.::[A,shapeless.HNil]]
がどのように私は
as
の結果を返す関数を書くか、およびその署名は何であることを私に文句を言いますか?
ありがとうございます!
あなたは正しいです!これはコンパイルして動作します。それは私の問題が1つ上のレベルであることが判明しました。私はこのような一連の操作を適用するためにRightFoldでPoly2を使用しています。私はこの問題のために新しい質問をします。答えてくれてありがとう! (gremlin-scalaを愛し、書いてくれてありがとう) – prismofeverything
さて、新しい質問はこちら:http://stackoverflow.com/questions/40754229/scala-gremlin-scala-hlists-poly2-rightfold-and-a-missing -implicit-prepend – prismofeverything