さまざまな html パーツを独自のクラスに分割したいのですが、このコードに関する 1 つのことがわかりません (-snippet):
val z = for(a <- 0 to 5) yield div(s"$a")
body(h1("Testing stuff"), z)
うまく動作します。
以下も同様です。
body(h1("Testing stuff"), test)
private def test = for(a <- 0 to 5) yield div(s"$a")
うまくいかないのはこれです:
class Test[Builder, Output <: FragT, FragT](val bundle: scalatags.generic.Bundle[Builder, Output, FragT])
{
import bundle.all._
def render = for(a <- 0 to 5) yield div(s"$a")
}
val test = new Test(scalatags.Text)
body(h1("Testing stuff"), test.render)
これはコンパイルされません。それは言う(h1()
が削除されると)
{quote} タイプの不一致、予想: Modifier[Builder]、実際: IndexedSeq[test.bundle.all.Div.Self] {quote}
そして、私はその理由を理解していません。暗黙の魔法が起こっていますか?私を啓発し、それがどのように行われたかを教えてもらえますか?
編集:
私のコードと @Owen のコードの違いをさらに明確にするには:
他のクラス( new を初期化する場所Test
)でも importbundle.all.all_
を行いました(同じベースから派生)が、 import は行いませんでしscalatags.Text.all._
た。したがって、2 番目のパッケージには、変換を処理する暗黙の関数がいくつかあるようです。(まだ見つけていませんが。)
また、これがバンドルとしてimport bundle.all._
渡す場合と同じではないことも非常に面白いと思います。scalatags.Text