2

このコードを使用してリストをフィルタリングしています:

linkVOList = linkVOList.filter(x => x.getOpen().>=(100))

タイプ x は Scala によって推論されるため、.getOpen() メソッドを見つけることができます。

コード'x => x.getOpen()'をローカル変数に抽出できますか? 何かのようなもの :

val xval = 'x => x.getOpen()'

その後 :

linkVOList = linkVOList.filter(xval.>=(100))

.filter メソッドは型を推測するのに対し、.filter メソッドの外側で型を計算する必要があるため、これは難しいと思います。instaneofおそらくこれは、または別の方法を使用して達成できますか?

4

3 に答える 3

0

使うだけ

import language.higherKinds
def inferMap[A,C[A],B](c: C[A])(f: A => B) = f

scala> val f = inferMap(List(Some("fish"),None))(_.isDefined)
f: Option[String] => Boolean = <function1>

さて、これは値ではなく関数そのものです。値が必要な場合は、

val opened = linkVOList.map(x => x.open)
(linkVOList zip opened).filter(_._2 >= 100).map(_._1)

ただし、関数が必要な場合は

val xfunc = inferMap(linkVOList)(x => x.open)

しかし、あなたはそれを次のように使用する必要があります

linkVOList.filter(xfunc andThen { _ >= 100 })

また

linkVOList.filter(x => xfunc(x) >= 100)

実際には値はありませんが、値を計算する関数があるためです。

于 2013-04-29T22:24:07.210 に答える