2012-08-17 94 views
0

它產生的錯誤是:爲什麼這段Scala代碼不能編譯?

Funct.scala:5: 'val' expected but identifier found. 
[error] class Funct[In,Out](function: In => Out, description: String, implicit m: Manifest[In => Out]) { 

和有問題的代碼是:

import scala.reflect.Manifest; 

class Funct[In,Out](function: In => Out, description: String, implicit m: Manifest[In => Out]) { 

    def isType[K](implicit man: Manifest[K]) = { 
    m <:< man 
    } 

    def Apply(input: In): Out = { 
    function.Apply(input) 
    } 

    def toString() = { 
    description + m 
    } 
} 

我根本看不出來是什麼問題。

+1

您從錯誤輸出中用胡蘿蔔'^'省略了行,表明輸入行中發生瞭解析錯誤。 (它指向'implicit'後面的'm'。) – DaoWen 2012-08-17 05:53:14

回答

7

你應該能夠弄清楚幾個問題,但是這個消息確實有點混亂。

這裏的問題是implicit關鍵字必須標記整個參數組,而不僅僅是單個參數。嘗試:

class Funct[In,Out](function: In => Out, description: String)(implicit m: Manifest[In => Out]) 
3

function.Apply(input)應該function.apply(input)或只是function(input),但嚴重的是,只要使用的IntelliJ或Eclipse的,他們會馬上告訴你這些事。