2017-09-24 17 views
0

这些都是错误的:的if/else在斯卡拉:/简单的表达非法的开始伊尔

scala.scala:13: error: not found: value listaFibonaccisAux 
    listaFibonaccisAux int 0 
^
scala.scala:4: error: illegal start of simple expression 
    if (int>fibby) fibby :: (listaFibonaccisAux int (n+1)) 
^
scala.scala:1: error: illegal start of definition 
    else List() 
^
scala.scala:1: error: eof expected but '}' found. 
    } 
^

这里是我的代码,错误似乎是指简单的if/else声明,我已经尝试过包装和展开东西在括号,但它并没有帮助:

def listaFibonaccis (int:Int):List[Int]= 
    { 
    listaFibonaccisAux (int, 0) 
    } 

def listaFibonaccisAux (int:Int, n:Int):List[Int]= 
    { 
    var fibby = fib n 
    if (int> fibby) 
    fibby :: (listaFibonaccisAux (int, (n+1))) 
    else 
    List() 
    } 

def fib(n : Int) : Int = n match 
    { 
    case 0 | 1 => n 
    case _ => fib(n-1) + fib(n-2) 
    } 

fib发现在Fibonacci序列中的一些n

listaFibonaccisAux创建使用FIB Fibonacci数的列表,并停止如果这些数字比INT更大

listaFibonaccis只是一个简单的包装来调用另一个用0来启动它

这是一个普通的if/else声明放弃我的麻烦,这是可悲的。

回答

3

编译器抱怨if/else,因为它不认为之前的行已正确结束。

试试这个:fib(n)

虽然 “缀”(空格符号)有时是方便...

instance.method(arg)instance method arg

...因为你已经不能适用试图使用它。

+0

搞清楚Scala需要哪些地方,哪些地方没有让我疯狂,谢谢你的工作。 – Jose

+0

通常情况下,最好避免中缀,直到你有感觉,然后才是最简单,最明显的情况。 – jwvh

+0

永远不能在正常的函数调用中使用中缀 - 它需要一个成员函数。它被称为“中缀”,因为函数名称位于左侧和右侧之间。 – Suma