¿Cómo se pueden comparar dos valores de función de Scala para la igualdad. El caso de uso es que tengo una lista de funciones donde la lista puede contener duplicados y solo deseo ejecutar cada función una vez.Cómo comparar los valores de función de Scala para la igualdad
Si tengo:
scala> object A {
| def a {}
| }
defined module A
scala> val f1 = A.a _
f1:() => Unit = <function0>
scala> val f2 = A.a _
f2:() => Unit = <function0>
Si intento de comparar la función, ya sea con ==
o eq
, voy a tener false
en ambos casos:
scala> f1 == f2
res0: Boolean = false
scala> f1 eq f2
res1: Boolean = false
Es un problema indecidible en general. http://en.wikipedia.org/wiki/First-class_function#Equality_of_functions – missingfaktor