在Swift 2.2中,我经常使用类似于的简洁语法声明变量let x = UIView?()
。这给出x
了UIView?
类型,并使用对其进行了初始化nil
。
(当然,UIView
在这些示例中,您可以使用任何类型)
但是,当我在Swift 3.0中执行相同操作时,出现错误: Cannot invoke initializer for type 'UIView?' with no arguments
。它还说Overloads for 'UIView?' exist with these partially matching parameter lists: (Wrapped), (nilLiteral: ())
。不知何故,我认为UIView?(nilLiteral: ())
我所追求的不完全是。
当然,还有其他替代方法可以执行相同的操作,例如let x: UIView? = nil
和let x = nil as UIView()
,但是它们比我以前使用的方法更为冗长。UIView?()
在Swift 3.0中删除了构造函数,还是以我尚未发现的形式替换了它?
以下将x初始化为nil,方括号完全多余。
var x: UIView?
return x == nil
将返回true
查看开发者文档以获取更多信息。
https://developer.apple.com/library/content//documentation/Swift/Conceptual/Swift_Programming_Language/TheBasics.html
如果定义可选变量而不提供默认值,则该变量会自动为您设置为nil:
var surveyAnswer: String?
// surveyAnswer is automatically set to nil
@Hamish发表评论以阐明UIView?()不再起作用的原因:
“语法UIView? 只是Optional的语法糖,因此UIView?()只是Optional.init()的语法糖。在Swift
2中,Optional的init()构造一个新的可选值设置为.None。是的,它工作正常。但是在Swift
3中,此初始化程序已被删除,这就是UIView?()不再起作用的原因”
本文向大家介绍请解释Java中的概念,什么是构造函数?什么是构造函数重载?什么是复制构造函数?相关面试题,主要包含被问及请解释Java中的概念,什么是构造函数?什么是构造函数重载?什么是复制构造函数?时的应答技巧和注意事项,需要的朋友参考一下 考察点:JAVA构造函数 当新对象被创建的时候,构造函数会被调用。每一个类都有构造函数。在程序员没有给类提供构造函数的情况下,Java编译器会为这个类创建一
我正在尝试编写一个Python实用程序,将Oracle的RAW字节字符串(作为字符串)转换为Guid,反之亦然。我试图重用我在C#中构建的同一个实用程序中的算法,但是从同一个字节数组构造一个和一个会产生不同的Guid/UUID。它们是一样的,不是吗?我读过UUID只是一个更好的术语。 在C#中,我有一个字节数组,< code>byte_array如下所示: 在 Python 中,我有一个字节数组,
操作步骤: 菜单栏: Code —> Generate —> Constructor 快捷键: Mac: command + N Windows\/Linux: Alt + Insert —> Constructor
正如michaelpark所指出的,如果我们不想最终使用错误的构造函数,那么添加完美的转发构造函数可能会很棘手。 目前,我有一个类,它使用了一个完美的转发构造函数,因此,我需要显式声明4个构造函数:
问题内容: 如果我在构造函数中返回一些值或对象,那么var会得到什么? 在两种情况下都会得到什么n? 其实这是一个测验问题,答案是什么? 自定义对象构造函数返回什么? a)新实例化的对象 b)未定义-构造函数不返回值 c)不论return语句是 d)等于return语句是什么;新实例化的对象(如果没有return语句) 问题答案: 我发现了这个很棒的链接: 上面提到的第二点魔术是构造函数返回特定的
问题内容: 为什么下面的每一次打印程序,而不是或? 另外,如果我替换为。为什么会给出错误? 问题答案: 可以转换为or ,但不能转换为。因此,第二个构造函数出局了。 在转换为或转换为之间,转换更为具体,因此就可以选择。 JLS 第15.12.2节介绍了方法重载解析,并且我相信相同的方法也可以用于构造函数解析。15.12.2.5节介绍了选择最具体的方法(在这种情况下为构造函数): 非正式的直觉是,如