我試圖制作一個簡單的擴展方法zipWith,它只是將一個集合映射C[A]到C[(A, B)]這樣的:
List(1,2,3) zipWith (_ * 2)
// List((1,2), (2,4), (3,6))
我試過這個:
scala> extension[A, C[_] <: Iterable[_]] (s: C[A]) def zipWith[B](f: A => B): C[(A, B)] = s map ((x) => (x, f(x)))
-- Error:
1 |extension[A, C[_] <: Iterable[_]] (s: C[A]) def zipWith[B](f: A => B): C[(A, B)] = s map ((x) => (x, f(x)))
| ^
| Found: (x : Any)
| Required: A
我錯過了什么?
uj5u.com熱心網友回復:
您可以IterableOnceOps按照此處的說明使用。
import scala.collection.IterableOnceOps
extension [A, CC[_]](it: IterableOnceOps[A, CC, Any])
def zipWith[B](f: A => B): CC[(A, B)] =
it.map(a => (a, f(a)))
您可以在此處看到運行的代碼。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/366273.html
上一篇:物件不是包的成員
下一篇:Scala:用于操作鏈的理解
