Swift:Assert 语句中的可选元组类型

Posted

技术标签:

【中文标题】Swift:Assert 语句中的可选元组类型【英文标题】:Swift: Optional tuple type in Assert statement 【发布时间】:2015-01-23 13:54:41 【问题描述】:

我正在尝试在 Swift 中实现优先级队列,但它仍处于初始阶段。我想先为数据结构写测试。

目前我有这个方法,extractMin,它返回优先级队列中的第一个元素。实现如下(T是泛型值类型)。

//  Remove and return the element with minimum priority.
//  If the pq is empty, return nil.
func extractMin() -> (T, Double)? 
    return nil  //  Implementation goes here

我想为此函数编写测试。我要检查的第一件事是它在 pq 为空时返回nil。我想要这样的东西:

XCTAssertNil(priorityQueue.extractMin(), "A nil value should be returned when the priority queue is empty");

但是,这提示我一个错误,上面写着“(String,Double)与AnyObject不同”。

有没有办法解决这个问题?我该如何为这种可选的元组类型编写测试?

【问题讨论】:

【参考方案1】:

也许您可以考虑返回一个包含两个可选值的元组并检查两者?或者具有这两个成员的可选类。

此链接还讨论了缺少“import Foundation”的可能性:http://www.scottlogic.com/blog/2014/09/24/swift-anyobject.html

另见:How can one use XCTAssertNil with optional structs?

【讨论】:

以上是关于Swift:Assert 语句中的可选元组类型的主要内容,如果未能解决你的问题,请参考以下文章

Swift的可选链,类型转换和扩展

元组属性的自定义设置器(Swift)

关于swift中的可选类型

Swift学习笔记之----元组与可选值类型

Swift学习笔记之----元组与可选值类型

与 try 的可选绑定?并作为?仍然产生一个可选类型