2017-04-05 2 views
1

내가 다음 코드 작성 :스칼라 계승 구문 오류

def factorial(x: Int, factorial(x => { if (x == 0) 1 else x * factorial(x - 1) })): Int = factorial(3) 

을하지만 오류가있어 :

<console>:1: error: ':' expected but '(' found. 

답변

1

당신은 당신의 데프의 PARAM 항목으로 factorial이, 즉 올바르지 않습니다. 시도 :

def factorial(x:Int): Int = 
    if (x == 0) 1 
    else x * factorial(x - 1) 
3

코드의이 부분은 의미가 있습니다 (구문, 적어도) :

... 간다 무엇
def factorial(...): Int = factorial(3) 

함수의 인수입니다. 당신은 x:Int

def factorial(x: Int, ...): Int = factorial(3) 

으로 잘 떨어져 시작했다 그러나 그것은 종류의 factorial(x=>{if(x==0)1 else x*factorial(x-1)})와 구문 레일 꺼집니다. 나는 그것이 실제로 함수의 인수가 아니라는 점을 제외하고는 무엇에 관해서 말할 것인지 정말로 모른다. 그것은 표현입니다. 이는 인수 목록이 아닌 함수 본문 (= 이후)에 넣는 것과 같습니다.