Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift Swfit 4:如何获得可选<;X>;打印包含“可选”的说明的步骤`_Swift_Swift4 - Fatal编程技术网

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)