我注意到scala可以推斷某些方法參數的類型。 但我不明白確切的規則。有人可以解釋我爲什麼test1的方法工作,爲什麼test2的方法不起作用scala如何推斷方法的參數
object Test {
def test1[A]: A => A = a => a
def test2[A]: A = a
}
我找不到我的問題一個很好的標題,因爲我不明白什麼是該兩行發生。 你有什麼想法嗎?
我注意到scala可以推斷某些方法參數的類型。 但我不明白確切的規則。有人可以解釋我爲什麼test1的方法工作,爲什麼test2的方法不起作用scala如何推斷方法的參數
object Test {
def test1[A]: A => A = a => a
def test2[A]: A = a
}
我找不到我的問題一個很好的標題,因爲我不明白什麼是該兩行發生。 你有什麼想法嗎?
def test1[A]: A => A = a => a
|____| |____|
the return type an anonymous function
(a function from A to A) (`a` is a parameter of this function)
def test2[A]: A = a
| |
the return type an unbound value
(A) (i.e. not in scope, a is not declared)
的疑難雜症的是,在第一個例子a
是匿名函數的參數,而在第二個例子a
從不聲明。
test1
是一種不接受輸入並返回函數A => A
的方法。名稱a
作爲函數的輸入參數給出,函數簡單重載a
,它是輸入。
test2
是一種不接受任何輸入的方法,返回類型爲A
的值。該方法被定義爲返回名爲a
的變量,但該變量從未被聲明過,因此會出現錯誤。您可以將方法重新定義爲def test2[A](a: A): A = a
並且它可以工作,因爲現在a
已被聲明爲A
類型的變量,它是該方法的參數。
你的問題不清楚。這兩種方法都沒有任何參數。這裏沒有任何推斷。 –