Я работаю с Scala 2.9.2. Я хотел бы назначить неназванную функцию для переменной, но я не могу получить синтаксис прямо. Если я определяю именованную функцию, а затем присваиваю именованную функцию переменной, она, похоже, работает нормально, как показано в этом сеансе.Синтаксис для назначения функции переменной в Scala
$ scala
Welcome to Scala version 2.9.2 (OpenJDK Server VM, Java 1.7.0_65).
Type in expressions to have them evaluated.
Type :help for more information.
scala> type Foo = String => Int
defined type alias Foo
scala> def myFoo (s : String) : Int = s match {case "a" => 123 case _ => s.length()}
myFoo: (s: String)Int
scala> val foo : Foo = myFoo
foo: String => Int = <function1>
scala> foo ("b")
res0: Int = 1
scala> foo ("a")
res1: Int = 123
Пока что так хорошо. На этом этапе я думаю, что могу определить неназванную функцию и назначить ее переменной, но, похоже, я не могу понять синтаксис. Я попробовал несколько вариантов, и никто из них не работал.
scala> val bar : Foo = (s : String) : Int = s match {case "a" => 123 case _ => s.length()}
<console>:1: error: ';' expected but '=' found.
val bar : Foo = (s : String) : Int = s match {case "a" => 123 case _ => s.length()}
^
scala> val bar : Foo = (s : String) => Int = s match {case "a" => 123 case _ => s.length()}
<console>:8: error: reassignment to val
val bar : Foo = (s : String) => Int = s match {case "a" => 123 case _ => s.length()}
^
scala> val bar : Foo = ((s : String) => Int) = s match {case "a" => 123 case _ => s.length()}
<console>:1: error: ';' expected but '=' found.
val bar : Foo = ((s : String) => Int) = s match {case "a" => 123 case _ => s.length()}
^
scala> val bar : Foo = (s : String) : Int => s match {case "a" => 123 case _ => s.length()}
<console>:1: error: ';' expected but 'match' found.
val bar : Foo = (s : String) : Int => s match {case "a" => 123 case _ => s.length()}
^
scala>
Извините за элементарный вопрос, но может ли кто-нибудь указать правильный синтаксис?