에서 DIV()를 호출 할 수 없습니다 잘 작동합니다.Scalatags, 나는 자신의 클래스에 다른 HTML-부분을 분할하고 싶습니다 지금은이 코드 (-snippet)에 관한 한 가지를 이해하지 않는 다른 클래스
그래서 수행합니다
하지 작업을 수행 무엇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()
이 제거되면)라고
예상 {인용} 유형 불일치 : 수정 [빌더, 실제 : IndexedSeq [test.bundle.all.Div.Self] {인용}
그리고 나는 그 이유를 이해하지 못한다. 암묵적인 마술이 진행되고 있습니까? 어떻게 깨달을 수 있습니까?
편집 :
더 광산 및 @Owen의 코드 사이의 차이를 명확히하려면 : 파생 (나는 새로운 Test
를 초기화하는 경우) 나뿐만 아니라 수입 bundle.all.all_
을했던 다른 클래스에서
을 (동일한 기본에서 가져옴), 가져 오기는 허용되지 않습니다. scalatags.Text.all._
. 따라서 두 번째 패키지에는 전환을 처리하는 몇 가지 암시가있는 것으로 보입니다. (아직 찾지 못했지만)
scalatags.Text
을 번들로 전달할 때 이것이 import bundle.all._
과 같지 않다는 사실도 알게되었습니다.
을 그리고 여기의 차이입니다 : 여기에 컴파일 된 전체 코드의 I입니다뿐만 아니라 (같은 염기로부터 유도 된) bundle.all.all_' 다른 클래스에서 내가'가져 오기를했지만 *하지 *'수입 scalatags. Text.all._'. 따라서 두 번째 패키지에는 전환을 처리하는 몇 가지 암시가있는 것으로 보입니다. 나는 아직 그들을 찾지 못했지만. 특히'bundle.all._'은'scalatags.Text.all._'과'scatatags.Text'를'bundle'으로 전달하기 때문에 재미 있습니다./어쨌든 고맙습니다! – Sorona
@Sorona 특별히 암시적인 것을 찾으려면'-Yprint : typer'가 좋은 방법입니다. – Owen