implicit

    0熱度

    1回答

    對於錯誤的標題感到抱歉。 我正在使用具有此特徵的基礎特徵和多個實現的庫。然而,取代傳統的方法重寫,方法專用化是通過採用隱式參數的方法提供的。一般模式是如下 class Cont[TT](val n : Int) trait I[ +Self ] { final def foo[TT >: Self](implicit num : Cont[TT]) = num.n } trai

    4熱度

    1回答

    在下面的代碼中,我嘗試導出無形狀的類型實例。然而,對於更復雜的案例類(它被轉換爲更復雜的HList),編譯器給了我一個「發散的隱式擴展」,即使它似乎沒有兩次解決同一種隱式類型。也許我錯過了編譯器的其他規則? (小提琴:https://scalafiddle.io/sf/WEpnAXN/0) import shapeless._ trait TC[T] sealed trait Trait1

    0熱度

    1回答

    很長一段時間我都試圖避免隱式類,但最近我陷入了它。目前我無法弄清楚爲什麼我的函數aFunc2的返回類型無法轉換爲其隱式形式,因爲它爲aFunc1中的參數所做的操作。 object SO extends App { implicit class Experiment[K, V](tpl: (K, V))(implicit o: Ordering[K], f: Fractional[V])

    2熱度

    2回答

    短的問題: 有沒有辦法問Scala編譯器來告訴我,在程序中給定的點使用的規定隱含宣佈? 如果沒有,是否有一個算法,我可以手動跟蹤找出自己在隱式聲明的位置? 長的問題: 我下面簡單的噴污物tutorial。 在下面的代碼段(即將該this回購本教程): pathEnd { post { entity(as[Question]) { question => comple

    0熱度

    1回答

    是否可以定義我自己的平等概念或對Scala中的集合進行排序?覆蓋equals和hashCode在這種情況下不起作用,因爲我想有多個實例。 這大致就是我腦子裏想的:(忽略此代碼的無效) implicit val customEq1(x: Int, y: Int) = x % 8 == y % 8 val customEq2(x: Int, y: Int) = x.toString == y.toS

    1熱度

    1回答

    我需要真的 untypecheck我的宏發出的樹。這意味着不僅要移除推斷的類型和所有這些,還要移除由編譯器推斷的隱含參數。甚至沒有resetAllAttrs似乎照顧這一點。 Symbol s似乎有一個方法isSynthetic,指示代碼是否由編譯器生成,但顯然該標誌僅針對自動生成的getter和setter等設置,而不針對編譯器插入的隱式值。 我當然可以手動查找所有隱式參數列表並刪除它們,但是我也

    3熱度

    1回答

    我想讓編譯器根據已知的其他2個類型參數推斷某種類型。這裏的例子: trait ReturnCount trait ReturnsMany extends ReturnCount trait ReturnsOne extends ReturnCount class Query[R <: ReturnCount]{ def join[R2 <: ReturnCount,R3 <: R

    0熱度

    1回答

    我想擴展泛型mSort函數來使用implicits和type bounds。當我使用通用特徵來擴展Ordered而不是抽象類時,它工作正常。你能幫忙嗎? object MergeSort extends App { // With Abstract Class abstract class Id(id: Int) extends Ordered[Id] { over

    1熱度

    1回答

    我在scala中創建伴侶對象並試圖在class中嘗試使用object隱含功能而不導入。但是,無論何時,試圖編譯代碼我得到一個錯誤:type mismatch;似乎它不能自動導入implictis。以下是我的代碼: object ImplicitTest5 { implicit def dollarToRupa(dollar: Dollar): Rupa = { println

    2熱度

    1回答

    對於一個項目,我必須通過隱式連接連接到FTPS服務器。 我試過使用node-ftp,因爲它似乎是唯一支持隱式連接的庫。 我連接使用下面的代碼: var ftpC = new FTPClient(); ftpC.on('ready', function() { console.log('Connection successful!'); }); ftpC.o