在Swift函数中返回nil

20

在Swift中,我有一个返回某种对象的函数。该对象是可选的。当它不存在时,我应该返回nil,但Swift禁止我这样做。下面的代码无法工作:

func listForName (name: String) -> List {

        if let list = listsDict[name] {
            return list
        }   else {
            return nil
        } 
    }

它说:错误:'nil'与返回类型 'List' 不兼容

但是我不想返回一个空的List对象,我想在可选项为空时返回nothing。怎么做?


因为返回类型 List 不是可选的,所以通常将返回更改为 List? - CarpenterBlood
@CarpenterBlood 谢谢。 - Evgeniy Kleban
1个回答

60
为了解决错误,您需要返回一个 Optional:List?
func listForName (name: String) -> List? {

    if let list = listsDict[name] {
        return list
    }   else {
        return nil
    } 
}

或者直接返回listsDict[name],因为它要么是可选的,要么就是列表本身。

func listForName (name: String) -> List? {
    return listsDict[name]
}

但我不想返回像空列表对象这样的东西,当可选项为空时我想返回空值。该怎么做?

你有几种选择:

  • 返回可选列表(List?)
  • 在没有找到数据时返回一个空列表
  • 返回异常(取决于上下文)
  • 使用枚举来表示Either/Result(类似于Optional但根据您的使用情况可能更好)

而且函数体只需写成 return listsDict[name],这基本上否定了整个函数的意义。 - rmaddy
虽然不是重复问题,但他的问题是:“当可选项为空时,我想返回空值。如何做到这一点?” 有几种方法可以实现,如上所述。 - nathan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接