给定的数组[Any]
具有可选和非可选值的混合,例如:
let int:Int? = 1
let str:String? = "foo"
let values:[Any] = [int,2,str,"bar"]
我们怎样才能提取的值Optional
的Any
类型(如果有的话),所以我们可以创建一个通用的打印功能,仅打印出的值。
例如,此printArray函数通过并打印每个元素:
func printArray(values:[Any]) {
for i in 0..<values.count {
println("value[\(i)] = \(values[i])")
}
}
printArray(values)
将输出:
value[0] = Optional(1)
value[1] = 2
value[2] = Optional("foo")
value[3] = bar
我们如何更改它,以便它仅打印基础值,以便在“可选”时解开该值?例如:
value[0] = 1
value[1] = 2
value[2] = foo
value[3] = bar
将参数更改为时[Any?]
,它可以工作,例如:
let values:[Any?] = [int,2,str,"bar"]
func printArray(values:[Any?]) {
for i in 0..<values.count {
println("value[\(i)] = \(values[i]!)")
}
}
printArray(values)
这将打印所需的:
value[0] = 1
value[1] = 2
value[2] = foo
value[3] = bar
但是仍然想看看我们如何解开Optional,Any
因为MirrorType.value
返回的结果使得提取Optional值变得困难,例如:
class Person {
var id:Int = 1
var name:String?
}
var person = Person()
person.name = "foo"
var mt:MirrorType = reflect(person)
for i in 0 ..< mt.count {
let (name, pt) = mt[i]
println("\(name) = \(pt.value)")
}
打印输出:
id = 1
name = Optional("foo")
当我需要时:
id = 1
name = foo
对于Xcode 7和Swift 2:
func unwrap(any:Any) -> Any {
let mi = Mirror(reflecting: any)
if mi.displayStyle != .Optional {
return any
}
if mi.children.count == 0 { return NSNull() }
let (_, some) = mi.children.first!
return some
}
let int:Int? = 1
let str:String? = "foo"
let null:Any? = nil
let values:[Any] = [unwrap(int),2,unwrap(str),"bar", unwrap(null)]
这会给你 [1, 2, "foo", "bar", {NSObject}]
更改NSNull()
为,nil
并且unfrap func的返回值Any?
始终将解开任何类型。
问题内容: 如何解开返回为以下内容的字符串: (可选(可选“蓝色”)) cityLabelName打印为 问题答案: 给定一个double可选,如以下双重包装: @Leo 表明您可以使用 可选绑定 两次: 或强制解开两次: 您可以使用以下5种方法来安全解开double可选: 方法1: 您还可以使用 模式匹配 : 正如@netigger在回答中指出的那样,它也可以写成: 简洁性虽然较差,但较容易阅读
问题内容: 您如何正确地拆开普通选项和隐式选项? 这个主题似乎有些混乱,我只想对所有方法以及它们如何有用提供参考。 当前有两种创建可选项的方法: 有两种解开包装的方式吗?另外,使用和展开过程之间有什么区别? 问题答案: 有很多相似之处,只有少数区别。 (常规)可选 宣言: 不安全地展开: 安全地测试存在: 通过绑定安全地展开: 安全链接: 安全合并零值: 隐式展开的可选 宣言: 不安全地展开(隐式
keyof Map<any, any>返回的什么类型啊? 在vue3的源码里有这么一个类型 这里的Omit<T, keyof Map<any, any>>里的keyof Map<any, any>返回的什么类型啊? never吗? 我单独给一个变量赋值为这个类型,发现不管是什么值都不符合 let test: keyof Map<any, any>
这是另一个StackOverflow问题的代码段: 我真的很难理解选修课的用法。返回代码是“返回映射(字符串)的值”还是NULL(如果失败)? return如何作用于方法而不是类-这是可选的。不可数()?
本文向大家介绍SpringMVC Controller 返回值的可选类型详解,包括了SpringMVC Controller 返回值的可选类型详解的使用技巧和注意事项,需要的朋友参考一下 spring mvc 支持如下的返回方式:ModelAndView, Model, ModelMap, Map,View, String, void。 ModelAndView 通过ModelAndView构造方
场景:登录www.makemytrip.com-->单击“我的帐户”链接-->单击“配置文件”选项-->弹出“个人信息” 我不能使用Select,因为它不是类型下拉列表。好心的建议,我可以如何编码选择不同的值从类型按钮的标题字段。