Swift Swfit 4:如何获得可选<;X>;打印包含“可选”的说明的步骤`
我知道可选值“在引擎盖下”表示为Swift Swfit 4:如何获得可选<;X>;打印包含“可选”的说明的步骤`,swift,swift4,Swift,Swift4,我知道可选值“在引擎盖下”表示为optionalenum 公共枚举可选{ 无案例 包装箱(已包装) } 在某种程度上,这对开发人员来说是隐藏的(出于充分的理由),因此当打印选项时,默认行为(在Swift 4中)是省略可选部分,只打印nil或仅打印值 let longFormDefinedOptionalInt: Optional<Int> = nil let shortFormDefinedOptionalInt: Int? = 99 print("\(longFormDefin
optional
enum
公共枚举可选{
无案例
包装箱(已包装)
}
在某种程度上,这对开发人员来说是隐藏的(出于充分的理由),因此当打印选项时,默认行为(在Swift 4中)是省略可选部分,只打印nil
或仅打印值
let longFormDefinedOptionalInt: Optional<Int> = nil
let shortFormDefinedOptionalInt: Int? = 99
print("\(longFormDefinedOptionalInt)") // Prints "nil" and NOT "Optional.none"
print("\(longFormDefinedOptionalInt)") // Prints "99" and NOT "Optional.some(99)"
let longFormDefinedOptionalInt:Optional=nil
让shortFormDefinedOptionalInt:Int?=99
打印(\(longformdefinedoptionant)//打印“nil”而不是“Optional.none”
打印(\(longformdefinedoptionant)//打印“99”而不是“可选。某些(99)”
是否有关于可选项的完整和真实描述,即“可选。无”或“可选。某些(99)”
我确信这是可能的,因为XCTest在打印失败消息时以某种方式做到了这一点,例如
xctasertequal(Int(“99”),11)
XCTASERTEQUAL失败:(“可选(99)”)不等于(“可选(11)”)
我认为XTest使用了:
但是,对于nil
值,此属性将返回“nil”
,而不是“Optional.none”
您可以编写扩展名:
extension Optional {
var fullDescription: String {
switch self {
case .none:
return "Optional.none"
case .some(let value):
return "Optional.some(\(value))"
}
}
}
let a: Int? = nil
print(a.fullDescription)
来自XTest的消息并不完全是您想要的。你想要可选。一些(11)
,而消息只是可选的(11)
。我在发布前尝试了debugDescription
,真是个白痴,但我一定是用nil值尝试了它,并假设它不起作用。谢谢。@OliverPearmain,如果您想查看可选。一些和可选。但是没有一个您仍然需要编写扩展。
extension Optional {
var fullDescription: String {
switch self {
case .none:
return "Optional.none"
case .some(let value):
return "Optional.some(\(value))"
}
}
}
let a: Int? = nil
print(a.fullDescription)