簡體   English   中英

這些屬性之間有什么區別?

[英]What's the different between these properties?

我創建了一個具有兩個屬性的RootView類,它們以不同的方式聲明。 現在我想知道這兩個聲明之間的區別是什么?

class RootView: UIViewController {

    // MARK: - Variables
    var rightMenu: RightMenu = RightMenu()
    let right = RightMenu()

}

請指導我有關rightrightMenu

兩者的類型相同,但以下幾點將告訴您何時需要Type Annotation ,何時不需要。

這里有一些概念。

  1. 您的rightMenu是一個變量,您在alter point上重新分配了一個相同類型的值,其中right是一個常量,因此您無法重新分配新值。

  2. Swift引入了類型推斷概念,如果您在不提供類型的情況下分配值(文字),它將直接為您確定類型。 因此需要為其提供明確的類型。 在這里,您的rightMenuright都是同一類型。

理想情況下,如果在聲明時將初始值分配給變量,則無需提供顯式類型。

a) var myClass: MyClass!

在這里您需要提供類型,因為沒有提供初始值,並且您想在以后為它分配值。

b) var myClass = MyClass()

這里沒有必要,因為您提供了初始值,Swift編譯器將自動確定其類型。

在夫特提供/對后一變量或常數聲明類型:符號被稱為Type Annotation 有關更多詳細信息,請參閱Apple文檔。

唯一的區別是這兩個變量的可變性。 您可以更改rightMenu因為它是可變的。 但是, right不是可變的。 這意味着right是一個常數。

從語法的:RightMenu在聲明rightMenu時不必添加:RightMenu rightMenu 就像您聲明right ,編譯器將推斷對象為RightMenu類型。 但是,當您只想聲明某些內容而不初始化它時。 您可能需要使用:<type>? 告訴編譯器此ivar的類型和值可能丟失。

暫無
暫無

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

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