implicit

    0熱度

    1回答

    我需要在視圖中創建URL時隱式傳遞一些變量。 我有行動控制器: class HomeController extends Controller{ def index(implicit lang: Lang) = Action.async { implicit request => { Future[Result] { Ok(views.html.home.ind

    1熱度

    1回答

    在下面簡單的例子我沒有編譯錯誤: object App { def main(args: Array[String]) = { test[Int]() } def test[T <: Int : ClassTag]() = println(implicitly[ClassTag[T]]) } 程序打印Int。但我不明白爲什麼可以找到類型ClassTag

    0熱度

    2回答

    通過隱式引用我有以下代碼: class myClass(someObject:Option[SomeThing]){ def doSomeThing(a:Int,b:Int)(implicit someOtherOption:Option[SomeThing]) = ??? } 我想從構造函數傳遞someObject到doSomething方法。 我可以做一個類 implicit

    1熱度

    2回答

    我一直在遇到問題重構3種方法中的普通代碼和makeRequest(),但我從編譯器得到含糊不清的隱式匹配。我不確定這是否來自默認的隱式方法或其他問題,但我的目標是getRequest/deleteRequest/postRequest可以簡單地調用makeRequest(「GET」)/ makeRequest(「DELETE」)/ makeRequest(「POST」 )。此前沒有任何參數被隱式的

    2熱度

    3回答

    我寫這個例子 class TestMatch[T](private val t: T){ def test()(implicit ev: T <:< Option[Int]) = println(ev(t).get) } 和測試它 val tm = TestMatch(Some(10)) tm.test() //fine val tm2 = TestMatch(10) tm

    1熱度

    2回答

    調用方法,我有以下方法: def test[T](implicit ev: T <:< Int, t : T) = println(t) 我怎麼能打電話嗎?我試圖 test(10) 但是,編譯器打印出以下錯誤:所有的 Error:(19, 9) not enough arguments for method test: (implicit ev: <:<[T,Int], implicit

    1熱度

    1回答

    在許多關於Scala隱式優先級的解釋中,它指出如果有多個具有相同優先級的事物,則應用Scala的「靜態重載規則」。 雖然這個規則沒有解釋。看來這個表達式在這種情況下是專門使用的。什麼是Scala的靜態重載規則?

    4熱度

    1回答

    我正在嘗試構建一個小型DSL,它允許一些if-then-else分支具有兩種類型的組合,一種通用(If),另一種具有增加的功能(IfGE)。我的印象是,通過混合低優先級的隱含特性,我可以讓Scala爲Else操作選擇更精確的返回類型,但它失敗。這裏是建設: 編輯:這是一個最小的情況。下面更深入地介紹了上下文。爲了回答這個問題,可能只關注這個最小案例就足夠了,而要理解我在做什麼,更長的例子可能會更好

    2熱度

    1回答

    即使在瞭解了Scala中的靜態超載後(What is Scala's static overloading rule?),我仍然無法將其用於<:<類。 此類用來檢查子類,並在Predef定義: sealed abstract class <:<[-From, +To] extends (From => To) with Serializable private[this] final val s

    5熱度

    3回答

    我想用一些自定義代碼增強所有Iterable。 爲此,我寫了下面的: implicit class RichIterable[A, B <: Iterable[A]](b: B) { def nonEmptyOpt: Option[B] = if (b.nonEmpty) Some(b) else None } 現在,當我想用​​一個List這個方法絕對是Iterable像這樣 L