Функции в Scala не имеют описательных имен, так же как Ints или Lists имеют описательные имена;Вы могли бы привести аргумент в пользу toString
, дающего представление его значения, но это не будет именем.
Вы можете, однако, расширить Function2
таким образом:
object f1 extends Function2[Int, Int, Int] {
def apply(a: Int, b: Int) = a + b
override def toString = "f1"
}
который будет действовать, как вы хотите.
Или, в более общем смысле,
class NamedFunction2[T1,T2,R](name: String, f: Function2[T1,T2,R])
extends Function2[T1,T2,R] {
def apply(a: T1, b: T2): R = f.apply(a, b)
override def toString = name
}
, затем используйте как
val f1 = new NamedFunction2[Int, Int, Int]("f1", _ + _)
и т. д.