簡體   English   中英

按名稱調用參數

[英]call-by-name parameter

任何人都可以給我解釋如何在 Scala 編譯器中按名稱工作? 該方法的語法快捷方式將是這樣的: arg: =>Int將轉換為arg: () => Int並捕獲傳遞給函數的參數,如何閉包? 即按名稱調用參數的真實類型,例如: Function0[_] ?

謝謝。

正如您自己所發現的那樣,按名稱調用參數將降糖降為Function0[A] 他們沒有一流的支持,因此沒有不同的類型。

您可以使用 Scalaz 的Name沿着這些方向實現一些目標。 為此,請參閱此處接受的答案。

如果我正確理解了這個問題,是的,語法=> Int本質上是匿名無參數函數() => Int的輕量級語法,它在 Scala 中由Function0[Int]類型表示。 此外,在 VM 中按名稱參數轉換為內部類。

按名稱參數的類型是無參數方法(請參閱@som-snytt 的注釋)。 除了方法的參數類型之外,它不能在 Scala 2.x 的任何地方使用。

您可以使用Function0代替按名稱傳遞的參數,但具有不同的語義。

暫無
暫無

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

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