Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.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 &引用;遗失报税表;在函数中查找字典中具有最小/最大值的键_Swift - Fatal编程技术网

Swift &引用;遗失报税表;在函数中查找字典中具有最小/最大值的键

Swift &引用;遗失报税表;在函数中查找字典中具有最小/最大值的键,swift,Swift,我定义了以下函数来查找字典中的最小键值: func keyMinValue(dictionary: [String: Double])-> String{ for (key,value) in dict{ if value == dict.values.minElement(){ return key } } } 错误表明我的代码是: 预期返回“String”的函数中缺少返回 我以前在Python代码中也使用过同样

我定义了以下函数来查找字典中的最小键值:

func keyMinValue(dictionary: [String: Double])-> String{

    for (key,value) in dict{
        if value == dict.values.minElement(){
            return key
        }
    }
}
错误表明我的代码是:

预期返回“String”的函数中缺少返回


我以前在Python代码中也使用过同样的逻辑,它是有效的。我是斯威夫特的新手,所以这里可能有些东西我遗漏了。函数是否在返回的第一个实例中不中断

你很接近。问题是如果字典中没有元素,返回什么?您可以考虑返回值<代码>可选< /代码>,如果没有找到元素,则返回<代码> nIL<代码>。< /P>
func keyMinValue(dict: [String: Double]) -> String? {

    for (key, value) in dict {
        if value == dict.values.minElement() {
            return key
        }
    }

    return nil
}

如果找不到键,那么该方法将不会返回任何内容。这可能是你的可能的副本,所以在SWIFT中,你应该安全地考虑调用函数、枚举、结构、类等时的“nIL”情况。当然,是肯定的。斯威夫特的好处在于它能帮助你做到这一点。在许多其他语言中,很容易无意中尝试使用
nil
值来执行可能导致崩溃的操作
Optional
s明确地让您知道值可能不存在,因此您可以正确地处理它。如果某个东西不是可选的,则在编译时可以保证它可以正常工作。更多详细信息,请参见: