Ответ 1
Я не думаю, что анонимные функции могут иметь параметры типа. Подробнее см. этот ответ.
Скажем, у меня есть это:
val myAnon:(Option[String],String)=>String = (a:Option[String],defVal:String) => {
a.getOrElse(defVal)
}
Не против, что делает функция. Есть ли способ сделать его общим, так что у меня может быть опция [T]?
Я не думаю, что анонимные функции могут иметь параметры типа. Подробнее см. этот ответ.
Подводя итог из этого ответа: Нет, вы не можете генерировать анонимные функции, но вы можете явно определить свою функцию как класс, который расширяет функции Function0, Function1, Function2 и т.д. и определяет функцию apply от этих черт. Тогда класс, который вы определяете, может быть общим. Вот выдержка из оригинальной статьи, доступная здесь:
scala> class myfunc[T] extends Function1[T,String] {
| def apply(x:T) = x.toString.substring(0,4)
| }
defined class myfunc
scala> val f5 = new myfunc[String]
f5: myfunc[String] = <function>
scala> f5("abcdefg")
res13: java.lang.String = abcd
scala> val f6 = new myfunc[Int]
f6: myfunc[Int] = <function>
scala> f6(1234567)
res14: java.lang.String = 1234