[英]How do I enrich a case class with minimal changes to the codebase?
使用 Scala 2.11.12。 分散在我的代碼庫中,我有一個這樣的案例類: (使用自定義案例類Sight )和相應的伴隨對象: 事實證明,擁有相似的類型會很有用,所以我創建了一個通用案例類: 帶有相應的伴隨對象: 顯然isIdyllic和pickByBeautifulSout ...
[英]How do I enrich a case class with minimal changes to the codebase?
使用 Scala 2.11.12。 分散在我的代碼庫中,我有一個這樣的案例類: (使用自定義案例類Sight )和相應的伴隨對象: 事實證明,擁有相似的類型會很有用,所以我創建了一個通用案例類: 帶有相應的伴隨對象: 顯然isIdyllic和pickByBeautifulSout ...
[英]Scala: value class X is added to the return type of its methods as X#
我想豐富一個'scala圖'圖。 為此,我創建了一個隱式值類: 問題在於其方法的返回類型,例如: 原因在於'Graph'具有依賴的子類型,例如NodeT嗎? 有沒有辦法使這種濃縮工作? ...
[英]How do I enrich a package object?
我最近發現可以使用 Pimp Enrich My Library模式使用.type向伴隨對象添加方法: 不幸的是,這似乎不適用於像scala.math這樣的包對象: 我得到以下編譯器錯誤: 是否可以豐富包對象? ...
[英]How to implement flatMap for Option
我正在嘗試將map和flatMap作為Option的擴展/擴展來實現,而不作弊並查看它在Scalaz中是如何實現的。 所以這是我到目前為止被困住之前得到的: 我真正需要的只是基本功能,因此我可以執行以下操作: 有什么提示嗎? ...
[英]Type mismatch; found : Int(1) required: B
我正在嘗試擴展List類,以便為比較大小提供一些更簡化的方法,但是我遇到了標題中的錯誤... 這是我的代碼: 這個想法是因為它只是比較了列表的大小,它們的類型可能不同而且無關緊要,但是當我嘗試這樣做時: 我得到了前面提到的錯誤。 如果我刪除B和設置that為類型List[ ...
[英]Configure scaladoc to include extension methods
我是否可以通過指定隱式轉換來將scaladoc配置為包含隱式轉換的方法? 如上所述 我可以在Foo的文檔中創建scaladoc include擴展方法bar嗎? ...
[英]Another Scala CanBuildFrom issue: a collection enrichment operator that wraps another of a different type
用戶RégisJean-Gilles很好地回答了我先前的問題,當時我在CanBuildFrom和擴充功能(又稱“ pimp my library”或“ enrich my library”)方面苦苦掙扎: 創建一個隱式函數,用正確的類型將map()包裝在Scala中:不適合膽小的人 ...
[英]How can I add new methods to a library object?
我從一個庫(特別是com.twitter.finagle.mdns.MDNSResolver )獲得了一個類。 我想擴展類(我希望它返回Future [Set],而不是Try [Group])。 當然,我知道我可以對它進行子類化並在那里添加我的方法。 但是,我正在嘗試學習Scala,這 ...
[英]Enrich an inner class
我想實現內部類的enrich-my-library模式,它將適用於外部類的任何實例。 像這樣的東西: class Outer { class Inner(val x: Option[Inner] = None) { def test(y: Inner) {} } } imp ...
[英]How can I add cross product based methods to scala collections?
希望這將是一個關於圖書館拉皮條的簡單問題(因為關於該主題的其他問題往往會產生超出我目前技能水平的答案)。 我想要做的就是將集合的交叉產品映射到自身。 所以我試圖讓皮條客Traversable : 但它不起作用(它沒有進行隱式轉換),我不明白為什么不(我對scala很新)。 ...
[英]How to implicitly extend a Function without losing type inference
對於DSL,我需要隱式擴展功能值。 例如: 使用PimpedFunction的函數可以定義為: 問題是在調用的代碼takes 。 預期的工作如下: 但是,如果我忽略了參數類型,編譯將無法推斷出它: 我可以更改任何內容以幫助進行scalac推理嗎? OBS ...
[英]Enrich-My-Library For all Traversables
我試圖弄清楚如何編寫一個適用於任何Traversable[_]的函數交換函數,給定一個集合和交換索引。 我想出了以下內容: 我想知道如何將它變成Traversable的隱式擴展,使我能夠用List(1,2,3,4,5).swap(0, 4)調用它。 我能得到的最接近的是: 不 ...
[英]Why doesn't Scala's implicit class work when one of the type parameters should be Nothing?
更新:我修改了示例,以便可以編譯和測試。 我有一個定義濃縮方法的隱式類: 問題是當第二個例子中R為Nothing時它不起作用。 它導致編譯器錯誤:在這種情況下,我得到以下編譯器錯誤: 為什么會這樣? 我設法通過為該案例創建一個單獨的隱式類來解決它: ...
[英]Enrich-My-Library optimization
免責聲明:我從C#來到Scala,在這里我非常感謝LINQ。 因此,我立即對迭代器和序列感到賓至如歸。 我錯過了收益率很高的“ C#風格”,但是我可以繼續做自己的事情……即使它付出了性能損失。 現在,當我錯過了一些C#中的集合方法時,我只是將其定義為擴展方法,並且編譯器在有效地處理代碼 ...
[英]How do you enrich value classes without overhead?
Scala 2.10引入了值類,您可以通過使類擴展AnyVal指定AnyVal 。 值類有許多限制,但它們的一個巨大優點是它們允許擴展方法而沒有創建新類的懲罰:除非需要裝箱,例如將值類放在數組中,它只是舊類加上一組將類作為第一個參數的方法。 從而, 解開比自己編寫i + j*j更貴的 ...
[英]Is there a way to “enrich” a Scala class without wrapping the code into another object?
在Scala 2.9中為庫類添加自定義方法(豐富或“皮條客”)我不得不寫這樣的東西: 隨着Scala 2.10的發布,我讀到它引入了隱式類定義,從理論上講,它是通過在返回匿名類對象的隱式方法中消除需要來簡化上述任務。 我以為這會讓我寫出來 這對我來說看起來更漂亮。 但是,這樣 ...
[英]Option-izing Java getters
從 Scala 使用 Java 時,我們必須考慮 null。 例如,HttpServletRequest getter(getAttribute、getHeader 等)都可能返回 null。 我知道我可以在每次調用 HttpServletRequest 方法時手動執行 case/match 或 m ...
[英]What is the best way to use enrich-my-library in scala?
這是實現它的兩種不同方式。 一個更短 第二是更長 哪一個更好? ...
[英]Scala, extending the iterator
我希望擴展迭代器以創建一個新方法takeWhileInclusive ,它將像takeWhile一樣takeWhile但包含最后一個元素。 我的問題是擴展迭代器以返回一個我希望延遲評估的新迭代器的最佳實踐。 來自C#背景我正常使用IEnumerable並使用yield關鍵字,但這樣的選項 ...
[英]Type inference on anonymous functions with enrich-my-library
假設我有一個方法將(兩個元素上的函數)轉換為(兩個序列上的函數): 換句話說,結果函數采用兩個序列xs和ys ,並創建一個由(xs(0) f ys(0), xs(1) f ys(1), ...)組成的新序列。例如,如果xss是Seq(Seq(1,2),Seq(3,4))並且f是(a: I ...