Juego con actores distribuidos de Scala. Muy agradable.Patrón coincidente con funciones de argumento cero en scala: mistificado por advertencia
Tengo un servidor que ejecuta objetos de funciones entrantes. Por ejemplo, el cliente tiene
object Tasks {
def foo = {Console.println("I am Foo")};
def bar = {Console.println("I am Bar");}
}
// In client actor...
...
server ! Tasks.foo _
...
y el servidor puede recoger estos y ejecutarlos con el código de actor como
react {
case task:(()=>Unit) =>
task()
Todo esto funciona muy bien (lo cual es muy muy bueno de verdad) pero me estoy desconcertado por una salida de mensaje de advertencia por scalac
para el código del servidor:
warning: non variable type-argument Unit in type pattern is unchecked since it is eliminated by erasure
case task:(()=>Unit) =>
^
Cómo se puede limpiar esta advertencia para arriba?
(estoy bastante claro en la diferencia entre el tipo Unit
, y el tipo de funciones sin argumentos ()=>Unit
. Sólo tratando de igualar task:Unit
en el react
está libre de advertencia, pero en realidad no coincide con las tareas entrantes .)
Usando Scala 2.7.5 en Debian, con Sun's Java6.