[英]Swift method which returns array
因此,我对我的类和结构接口在Swift中的外观有疑问。 例如,我有一个具有方法的类或结构:
func getAllObjectsFromSomewhere() -> [Int]
但是,请想象此方法并不总是返回您一些Int数组,因此有几种不同的处理方法。
func getAllObjectsFromSomewhere() -> [Int]?
func getAllObjectsFromSomewhere() throws -> [Int]
引发具有以下类型的自定义ErrorType:NotFound或EmptyArray func getAllObjectsFromSomewhere() -> [Int] { /* some code and then just return an empty Int array */ return [Int]() }
因此,我的问题是,什么时候以及为什么我应该采用哪种方法来组织界面? 有什么区别吗? 有指导原则吗?
根据情况,这三种方法均有效:
[Int]?
。 这使您可以区分空数组和根本没有数组。 throws
[Int]
和一个空数组。 这只是我的意见,我没有任何指导方针或任何要抛弃的内容,但是...
开箱即用,我认为这是可选选项的完美案例,这意味着该签名:
func getAllObjectsFromSomewhere() -> [Int]?
但是(一如既往:))这取决于情况。 这是我对您的方案的看法。
如果要实现该功能,通常会使用此功能。
在正常情况下,您期望在数组中返回一些Int
。
如果由于某种原因没有元素,则返回nil
,然后您可以检查是否使用了guard
或if let
。
通常,空数组不足以真正开始引发异常,但这取决于具体情况。
但是,如果您实际上希望getAllObjectsFromSomewhere
必须返回一个值,那么如果由于某种原因没有任何内容要返回,则抛出错误是有意义的。
这是我最不喜欢的解决方案。
当你打电话给你getAllObjectsFromSomewhere
你仍然需要做一次检查,看看如果返回的数组实际上包含任何东西( if getAllObjectsFromSomewhere().count > 0
)你决定做什么....为什么不使用前guard
或者if let
该?
如前所述,这只是我对这三种情况的想法,希望您可以使用它们。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.