[英]What's the different between these properties?
我創建了一個具有兩個屬性的RootView
類,它們以不同的方式聲明。 現在我想知道這兩個聲明之間的區別是什么?
class RootView: UIViewController {
// MARK: - Variables
var rightMenu: RightMenu = RightMenu()
let right = RightMenu()
}
請指導我有關right
和rightMenu
?
兩者的類型相同,但以下幾點將告訴您何時需要Type Annotation
,何時不需要。
這里有一些概念。
您的rightMenu
是一個變量,您在alter point上重新分配了一個相同類型的值,其中right
是一個常量,因此您無法重新分配新值。
Swift引入了類型推斷概念,如果您在不提供類型的情況下分配值(文字),它將直接為您確定類型。 因此需要為其提供明確的類型。 在這里,您的rightMenu
和right
都是同一類型。
理想情況下,如果在聲明時將初始值分配給變量,則無需提供顯式類型。
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.