簡體   English   中英

我應該使用Unit還是省略scala方法的返回類型?

[英]Should I use Unit or leave out the return type for my scala method?

我不確定將Unit指定為我的scala方法的返回類型或完全省略返回類型之間的區別。 有什么不同?

任何人都可以建議嗎?

隱式Unit返回類型:

def f() {println("ABC")}

顯式Unit返回類型:

def g(): Unit = {println("ABC")}

返回類型從最后一個方法表達式推斷出來,仍為Unit因為這是println的類型,但令人困惑:

def h() = println("ABC")

上述所有方法都是等效的。 我更喜歡f()因為單獨使用方法簽名后缺少=運算符對我來說已經足夠了。 當您想要額外記錄方法時,請使用explicit : Unit 最后一種形式令人困惑,實際上被視為的警告。

=運算符至關重要。 如果它存在,則表示:“ 請返回方法體中最后一個語句返回的內容 ”。 顯然,您不能將此語法用於abstract方法。 如果不是,則假設Unit

過程的特殊語法(返回Unit的方法)是一個錯誤。 不要使用它。 對於具有Java / C(++)背景的初學者來說,這是令人困惑和危險的。 這是一種不必要的特殊待遇。 始終使用等號,有和沒有類型推斷(后者應該只用於私人成員):

def foo(): Unit = someCodeReturningUnit()

private def bar() = someCodeReturningUnit()

Scala社區對此有所分歧。 一方面,不使用顯式返回類型意味着您可以輕松忘記=符號,這會導致通常很難跟蹤的錯誤。 另一方面,具有不同語法的Unit返回方法將它們放在一個單獨的類別中,這讓一些人感到滿意。

就個人而言,我寧願這句法會消失-從缺失所造成的誤差= 惱人跟蹤。 但它甚至都沒有被棄用,所以我寧願利用它而不僅僅是遭遇它存在的問題。

所以,使用你想要的任何東西。 無論是哪種方式都會批評你的選擇,人們無論如何都會贊美它。

暫無
暫無

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

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