単純化のため、ここではすべての型を削除し、単純なリストを使用しています。私は、コレクションと関数の2つのパラメータをとり、これを使って新しいコレクションを生成する関数があるとします。Scalaは既存の型で実行する関数を作成します
私は知っています!これは地図を再発明するように見えますが、実際のユースケースははるかに異なって複雑です。私がこれまで試したことのようなものです:
trait SomeHelper {
class CoolFunction(right: String => Boolean) extends Function1[List[String], List[Any]] {
inst =>
override def apply(left: List[ String ]): List[ Any ] = {
left match {
case a: List[String] => a.filter(right)
case _ => List()
}
}
}
def coolFunction(right: String => Boolean) = new CoolFunction(right)
}
object SomeHelper extends SomeHelper
import SomeHelper._
val myList = List("apple", "orange", "banana")
myList coolFunction {
a => a == "orange"
}
は「値coolFunctionが[文字列]リストのメンバーではない」私を生成し、私はとても近くだけど
を、それを把握することはできませんようにを感じています
なぜあなたは 'List.filter'を使用しての代わりに、独自の機能の種類を作成していませんか?あなたはコレクションに述語を適用したいようです。 –
@ YuvalItzchakov再び、私はロジックを単純化しました。この例は実際にはマップ/フィルタの再実装のように見えます。 – kali
おそらく実際にやっていることに向かって私たちを歩いてみてください。これは私にとってあまり意味がありません。 –