G>1) Почему ошибка во втором случае? Ведь case "hello" => println("hello back at you") также ничего не возвращает, как и просто println("hello back at you")
G>2) Что значит case "hello" -- какой параметр сравнивается на соответсвие ему? Тут нет match что-то.
Это выражение определяет PartialFunction
{
case "hello" => println("hello back at you")
case _ => println("huh?")
}
Т.е. в первом случае метод возвращает PartialFunction, а во втором случае — Unit.
http://twitter.github.io/scala_school/pattern-matching-and-functional-composition.html#PartialFunction