[英]Scala: overridable implicits in for-comprehension
我試圖通過API定義隱式,並希望允許客戶端覆蓋它們。 這里是一個討論:[ 如何覆蓋一個導入的隱式值? 我已經嘗試過最簡單的解決方案。 它按預期工作。 現在,我想以相同的方式定義基於未來的API,並將ExecutionContext定義為具有默認值的隱式。 我對理解力的每一行都遇到 ...
[英]Scala: overridable implicits in for-comprehension
我試圖通過API定義隱式,並希望允許客戶端覆蓋它們。 這里是一個討論:[ 如何覆蓋一個導入的隱式值? 我已經嘗試過最簡單的解決方案。 它按預期工作。 現在,我想以相同的方式定義基於未來的API,並將ExecutionContext定義為具有默認值的隱式。 我對理解力的每一行都遇到 ...
[英]Why am I getting a “ diverging implicit expansion” error when trying to sort instances of an ordered class?
關於這個問題有很多問題,但是經過一個小時的閱讀,我仍然無法理解我做錯了什么。 這是我擁有的代碼(Scala 2.11)的最小示例: 當我嘗試基本比較時,它可以正常工作: 但是,當嘗試訂購列表時,編譯器對我大喊: 編輯:感謝Dmytro Mitin,我現在知道Seq[An ...
[英]Implicit lookup for Typeclass of None is not compatible with Contravariant Typeclass of Option
我沒有以下代碼可以編譯,而且我對自己做錯了很好奇。 我定義了一個Contravariant Jsonwriter特性和一個接受隱式作者的函數: 另外,我定義了這些作者的一些實例: 現在,我編寫了一個測試: Some(1.0)的第一個測試工作正常,None的第二個測試 ...
[英]Implicit conversions in generic function
我需要從Any轉換為基本數字類型,例如Int或Double。 我通過使用Scala隱式實現了這些轉換。 我的代碼與此類似: 問題是我需要在像這樣的通用函數中進行這些轉換: 這是對doStuffAndConvert的調用: 但是,編譯器將引發以下錯誤: 我試圖通 ...
[英]import implicit conversions without instance of SparkSession
我的Spark-Code混亂了這樣的代碼 或者 我真的不明白為什么我們需要一個SparkSession實例來導入這些隱式轉換。 我寧願做類似的事情: 這個問題有優雅的解決方案嗎? 我對implicits的使用不僅限於$ ,還包括Encoders , .toDF()等。 ...
[英]How can I “pimp my library” with Scala in a future-proof way?
我使用Scala隱式類來擴展我經常使用的對象。 作為一個例子,我有一個類似於Spark DataFrame上定義的方法: 但是如果類已經定義了相同的方法,則不會調用隱式defs。 如果我以后升級到定義DataFrame#deduplicate方法的Spark的新版本會發生什么? 客 ...
[英]Advanced Type Constraints in Scala - Logical Operators and Implicit Parameters
我有下面的代碼,效果很好。 輸出: 我想修改方法union的定義,如下所示: union(1)的輸出應為以下內容: Some int: 1 不幸的是,在這種情況下,Scala不知道邏輯運算符Or(並且,不是,..),因此無法對其進行編譯。 我該怎么做? 我在 ...
[英]What is a “<refinement>” type gotten through a TypeTag?
我有一個方法: 大多數情況下, print[MyClass]在調用時會打印MyClass ,但有時會打印<refinement> ?。 我正在一個相當復雜的系統上工作(多個互連的jar,10萬行代碼),而且我似乎無法確定是什么決定了這是一種行為還是另一種行為。 但是, ...
[英]How do I get the implicit instance of the VectorSpace I need?
我正在嘗試使用尖頂使我編寫的線性插值函數更通用 我意識到這可以變得更通用,因為您可以通過這種方式對任何向量空間的元素進行插值。 所以我將其更改為: 但是,當我嘗試像這樣使用它時: 它說它找不到VectorSpace[Seq[Int],Double]的隱式。 有沒有辦法 ...
[英]Scala: implicit conversion not made?
akka.pattern.ask提供了一個隱式轉換(從ActorRef到AskableActorRef ,后者提供了ask方法) 但是,當我使用sbt進行編譯時,無法識別該轉換。 (Intellij看到了隱式轉換,對此沒有任何問題,但是我正在使用sbt進行構建。) 我可以使它明確 ...
[英]Summoning Scala implicits for subclasses of sealed abstract trait
我正在使用兩個都依賴於隱式參數的Scala庫來為案例類提供編解碼器/編組器(問題中的庫是msgpack4s和op-rabbit)。 一個簡化的示例如下: 一個庫的打印機可以是通用的,前提是存在另一個庫的隱式Show: 我想提供一個抽象化底層庫詳細信息的API-調用者只需要傳遞c ...
[英]Ambiguous implicit solution other than sub typing
如果你運行下面的代碼,你會得到一個ambiguous implicit錯誤: class Foo[T,I](val msg: I) object Foo { implicit def provide[T]: Foo[T,String] = new Foo("I came from ...
[英]Implicit argument in constructor vs method signature
編譯器在BroFinder1和BroFinder2中看到什么差異,導致第一個失敗? 我真的需要BroFinder1正常工作,而不使用輔助模式等模式。 trait Brother[I] { type Bro def get: Bro } class Foo object Foo { ...
[英]Runtime cost of implicit definitions in Scala's typeclass pattern
我正在看這篇文章,關於如何使用implicits在Scala中模擬類型類。 如果我沒有錯,每次使用遞歸實例聲明的類型類方法時,都會在運行時構造一個新實例( Printer a => Printer (Option a) )。 這是代碼,每次使用print ,都會在運行時創建一個新的 ...
[英]Conditionally generating implicits in scala
我正在研究一個鏈接的隱式函數系統,該系統類似於下面的簡化示例。 測試c1.payload == c2.payload表示我需要執行的測試不在“類型空間”中; 我曾期望我可以進入witnessEvidence定義的witnessEvidence ,但是Scala顯然不允許使用帶有任意類型的隱式 ...
[英]Test two scala shapeless HList types for equivalence via implicit
我對測試兩個HList異構記錄是否“等效”感興趣; 也就是說,它們具有相同的鍵/值對,但不一定以相同的順序。 是否有一個預定義的類型謂詞是做什么EquivHLists確實在下面的代碼片段? ...
[英]Scala covariance losing type constraints
我想在嘗試解決“錯誤位置問題中的協變量類型參數”情況時如何保留我的類型約束。 這是代碼: 我需要協方差,以便可以查找我的隱式對象。 為了能夠找到隱式的process方法。...我需要使第二類參數協變。 但是,然后我不能在convert方法中使用實際的類型信息。 任何想法 ...
[英]Get an implicit instance by class name
我想做的是:從類名獲取一個隱式實例。 主要問題是我無法獲取在運行時創建的類類型的隱式實例。 我有的: 我要做的事情:從類名中以某種方式獲取隱式實例。 錯誤:找不到參數worker的隱式值:Worker [typeHolder.Typed] val worker = get ...
[英]Why type equality check with implicitly fails?
我想在運行時在類型級別上進行一些計算。 因此,我為它們定義了包裝器類和隱式定義。 但是我不明白為什么在計算過程中類型信息會丟失 編譯器不接受e , l , g : 發生了什么,為什么編譯器拒絕承認X和y.Out是相同的類型。 是否可以改寫該示例以便將其編譯? ...
[英]Excluding type evidence parameters from analysis in Scala when using -Ywarn-unused
當將-Ywarn-unused傳遞給編譯器時,在Scala中編譯包含類型證據參數的程序(例如T <:< U )會引起警告。 特別是在類型證據參數用於驗證使用幻像類型編碼的約束的情況下,很可能會發生此警告。 例如,在此處編譯文件: https : //github.com/hs ...