【发布时间】:2020-05-05 14:41:21
【问题描述】:
我想将不同的 html 部分拆分为自己的类,但现在我对这段代码一无所知(-sn-p):
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() 被删除)
{引用} 类型不匹配,预期:Modifier[Builder],实际:IndexedSeq[test.bundle.all.Div.Self] {quote}
我根本不明白为什么。是否有一些隐含的魔法发生?谁能启发我并告诉我它是如何完成的?
编辑:
进一步澄清我的代码和@Owen 的代码之间的区别:
在另一个类中(我初始化了一个新的Test),我也导入了bundle.all.all_(从同一个基类派生),但没有导入scalatags.Text.all._。所以在第二个包中似乎有一些隐含的处理转换。 (虽然我还没找到。)
当我将scalatags.Text 作为捆绑包传递时,这与import bundle.all._ 不同,我也觉得很有趣。
【问题讨论】: