1

私の一般的な方法に気づきました:

def method[A](list: List[A]): A = { ... }

非ジェネリック関数型になります

val methodFun = method _
-> methodFun : (scala.List[Nothing]) => Nothing

ジェネリック型を保持する代わりに、カリー化するとき。ジェネリック型情報を保持する可能性はありますか? Stringたとえば、設定することにより、明示的な型を定義できることがわかりました

val methodFun = method[String] _
-> methodFun : (scala.List[String]) => String

しかし、これは私が本当に欲しいものではありません。私は現在、この問題を回避するために raw 型を使用する傾向があります (方法がわかり次第) またはより良い解決策はありますか?

手伝ってくれてありがとう!

PS: やりたい理由:

def method1[A](list: List[A]): A = { ... }
def method2[A](element: A): Int = { ... }
// This will not cause a compiler error as stated before
// but this will result in (List[Nothing]) => Int
// but I want a (List[A]) => Int
val composedFun = method1 _ andThen method2
// The next line is possible
// but it gives me a (List[String]) => Int
val composedFunNonGeneric = method1[String] _ andThen method2[String]
4

1 に答える 1