2015-05-25 22 views
0

新來的Scala和剛開始scala.Option備忘單。但是,這段代碼在sbt控制檯中拋出一個錯誤。簡單表達式的非法開始:選項類型和省略號

def option[A, X](o: Option[A])(none: => X, some: => A => X): X = ... 

該錯誤是

error: illegal start of simple expression

向上箭頭指向的省略號。修復似乎很簡單,但作爲一個新手,它目前沒有我

+1

'= ...'不是有效的函數聲明。要麼你實現你使用'???'的函數體來使它'尚未實現'(編譯,但在運行時拋出異常)。 – cchantep

+0

謝謝。 '''做了訣竅。另外,仔細查看示例之後,似乎作者沒有參加一些要運行的代碼。 – user3465296

回答

2

...是不是一個有效的Scala表達式。如果你想用一個「未知」的實現的功能,你可以使用???

def option[A, X](o: Option[A])(none: => X, some: => A => X): X = ??? 

此功能的目的顯然是把一個函數作爲參數,要麼nonesome根據選項的內容應用。您可以使用模式匹配來實現它:

def option[A, X](o: Option[A])(none: => X, some: => A => X): X = o match { 
    case Some(a) => some(a) 
    case None => none 
} 
+0

或使用現有的'.fold':'o.fold(none)(some)'。順便說一句,我會寫'A => B'而不是'=> A => B'。 – cchantep