Я играю с распределенными актерами Скалы. Очень мило.
У меня есть сервер, который выполняет объекты входящих функций.
Например, клиент имеет
object Tasks {
def foo = {Console.println("I am Foo")};
def bar = {Console.println("I am Bar");}
}
// In client actor...
...
server ! Tasks.foo _
...
И сервер может подобрать их и выполнить с кодом актера, например
react {
case task:(()=>Unit) =>
task()
Это все работает хорошо (что действительно очень круто), но я озадачен предупреждением, выводимым scalac
для кода сервера:
warning: non variable type-argument Unit in type pattern is unchecked since it is eliminated by erasure
case task:(()=>Unit) =>
^
Как мне убрать это предупреждение?
(Мне совершенно неясно, в чем разница между типом Unit
и типом ()=>Unit
с нулевым аргументом. Просто попытка сопоставить task:Unit
в react
не содержит предупреждений, но на самом деле не соответствует входящим задачам.)
Использование Scala 2.7.5 в Debian с Sun Java6.