結論から言うと、importに変数が使えるだけのこと。
型名に変数が使えるのは知ってたけど、これはついさっき知った。
val list = List(1, 2, 3)
import list._
foreach(println)
val x = map(_ * 2)
mkString("-")
知ったきっかけは、PlayでSeleniumを使ったテストを書いてたとき。
// コードはPlayのsamplesから拝借
running(...) { browser =>
browser.$("#name").text("Bob")
browser.$("#submit").click()
browser.$("dl.error").size must equalTo(1)
browser.$("dl#repeat_field dd.error").first.getText must equalTo("Numeric value expected")
browser.$("#name").first.getValue must equalTo("Bob")
browser.$("#repeat").text("xxx")
browser.$("#submit").click()
}
いちいちbrowserと打つのが面倒臭かったので、メソッド名だけで書けないかと思い、変数名でimportしてみたら通ってむっちゃ驚いた。これでテストコードは、jQueryライクの素敵なコードへと変身を遂げた。
running(...) { browser =>
import browser._
$("#name").text("Bob")
$("#submit").click()
$("dl.error").size must equalTo(1)
$("dl#repeat_field dd.error").first.getText must equalTo("Numeric value expected")
$("#name").first.getValue must equalTo("Bob")
$("#repeat").text("xxx")
$("#submit").click()
}