簡體   English   中英

為什么不能在Scala中為匿名函數指定結果類型?

[英]Why can't I specify a result type for an anonymous function in Scala?

編輯:找到答案,請參閱文章結尾。

不斷出現錯誤,發現這是因為我試圖將結果類型添加到lambda。 這可以

(p: Int) => p

(p: Int): Int => p

引起投訴。 我很驚訝-為什么不允許呢? 畢竟,如果我分配了lambda,我可以在變量中指定一種類型(為了便於閱讀,我將其放在括號中):

val f2: (Int => Int) = (p: Int) => p

但當時我還不如def它:

def f2(p: Int): Int = p

禁止使用它不會帶來任何明顯的危害,但這是意外的。 有什么想法嗎?


編輯:給我扔石頭,您可以:

(p: Int) => p : Int

好,回答。 以前從未見過。 我想我將在這里留給后代參考。

根據0__的建議,答案是給lambda的主體加上類型的后綴,而不是像def語法所建議的那樣將其放在參數列表之后。

我正在使用的實際示例用於解構列表並返回前兩個項目的元組:

(p: List[Int]): Tuple2[Int, Int] => { val x :: y :: rest = p; (x, y) }

失敗,但這成功

(p: List[Int]) => { val x :: y :: rest = p; (x, y) }: Tuple2[Int, Int]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM