我看到這個斯卡拉函數聲明中的某處:如何理解這種函數聲明:`=> .. => .. => ..`?
def test(f: => String => Result[AnyContent] => Result) = ...
我從來沒有見過這樣的功能:=> ... => ... => ...
,怎麼理解呢?
我看到這個斯卡拉函數聲明中的某處:如何理解這種函數聲明:`=> .. => .. => ..`?
def test(f: => String => Result[AnyContent] => Result) = ...
我從來沒有見過這樣的功能:=> ... => ... => ...
,怎麼理解呢?
String => Result[AnyContent] => Result
desugars到Function1[String, Function1[Result[AnyContent], Result]]
。閱讀它會有所幫助:=> String => (Result[AnyContent] => Result])
。也就是說,需要=> String
的函數返回函數Result[AnyContent] => Result
(也稱爲curried函數)。
=> A
是類型A
的名稱參數。因此=> String => Result[AnyContent] => Result
表示test
採用了名稱爲String => Result[AnyContent] => Result
的參數。瞭解更多關於名字參數here。
請記住,函數是一種正常的數據類型。函數可以返回函數。
f: => String => Result[AnyContent] => Result
相同
字符串=>(結果[AnyContent] =>結果)
這僅僅是一個從String
返回一個函數從Result[AnyContent]
到Result
功能。
f: =>
是由喬希在上面的答案中解釋的名稱參數。
'=>'是正確的聯想。 – missingfaktor 2012-03-04 10:59:28
謝謝。在看兒子的同時在操場上用智能手機發布答案可能不是個好主意;-) – Jan 2012-03-04 11:43:22
@Jan:你在Stack Overflow上,而你應該看着你的兒子? – 2012-03-04 14:51:38