无法在 swift 中将常量声明为可选?
Posted
技术标签:
【中文标题】无法在 swift 中将常量声明为可选?【英文标题】:Unable to declare a constant as optional in swift? 【发布时间】:2017-01-22 17:01:18 【问题描述】:我有以下代码。我试图将“名称”常量声明为可选,但它不允许它给出错误,因为
没有初始值的存储属性“名称”会阻止合成 初始化器
class VideoMode
let resolution = Resolution()
var interlaced = false
var frameRate:Float = 0.0
let name: String?
编辑:为什么我会收到这样的错误,因为在结构的情况下它不会给出任何错误
【问题讨论】:
一个永远不会改变的'nil'常量是荒谬的。 我投票结束这个问题,因为它太离题了 @matt,“太像了?”哈哈。也许太傻了? @matt:你为什么投票关闭作为离题并回答它?相关:meta.***.com/questions/262573/…:“回答离题问题,可以宣传这些问题是可以提出的问题,从而导致更多离题问题。” 相关:Why optional constant does not automatically have a default value of nil 【参考方案1】:你不得不说
var name: String?
或您必须为name
分配一个值或具有一个初始化name
的初始化程序 (init
)。
因此,这是合法的:
class VideoMode
let name: String?
init(name:String) self.name = name
这是合法的:
class VideoMode
let name: String? = "howdy"
但这不合法:
class VideoMode
let name: String? // compile error
原因很明显。如果name
是let
,并且您没有对其进行初始化,则它可以永远设置,因为它是一个常量。编译器不会让这种愚蠢的情况存在。
【讨论】:
【参考方案2】:你必须这样写-
var name = String()
【讨论】:
以上是关于无法在 swift 中将常量声明为可选?的主要内容,如果未能解决你的问题,请参考以下文章
在 Swift 中删除 Unwrapped 并使其成为可选? [复制]