[英]how do you return nil if a certain type is passed to a function in Swift?
好的,所以如果要将某种类型传递给函数,我将尝试返回nil。 在这种情况下,我传入了我的类“ BlogPost”的实例以及此博客文章中的类型。 我还有一个名为“类型”的数组,并且已将变量Video分配给该数组的最后一个索引。 如果将此类型传递给我的函数,我想返回nil(因此假设即时通讯在这里需要一个可选的函数来返回可能的nil),这就是我到目前为止的内容:
因此,总而言之,我需要传递我的博客文章的一个实例,但如果传入某种类型,则始终返回nil。希望这有意义
更新:
types
数组的定义如下:
let types : [String] = ["technology", "Fashion", "Animals"]
这是我在函数中引用的数组。 基本上,如果将数组的最后一个条目输入到函数中,则需要返回nil
确保这是博客文章,实际上确实有一个用于类型的空字符串
太好了,即时通讯工具我现在要做的就是更改blogpost.type以随机选择一个。 因此,现在,如果从该数组中选择特定类型,我该怎么做仍然会出现错误。 这是我已更新为
所以现在我要做的就是访问该数组中的2类型,如果我访问它,则返回nil。 有什么想法吗? 所以把它拖到谢谢
我认为你不能。 您可以创建满足您需要的故障初始化程序,但不能将其与常规功能一起使用。
最好的解决方案是返回可选的Int或String,当您调用该函数时,只需检查结果是否为nil并执行所需的操作,否则将其忽略:
func randomViews(blog : BlogPost.Type) -> Int? {
case 10:
return nil
case 10, 20 :
return 0
default:
random
}
if (randomViews(parameter) == nil) {
//function returned nil
}
您显示错误是因为将可选博客与视频进行了比较,因此必须首先将其解包,例如,如果您确定博客始终具有价值用途:
if blog! == Videos
如果不确定是否更安全使用:
if let blg = blog {
if blg == Videos {
}
else {
// blog has not have a value
}
您正在将blog
作为BlogPost.Type
参数传递。 那是不对的。 您应该只是将String
参数传递给它,或者可以将BlogPost
本身传递给它:
func randomViews(blog: BlogPost) {
let videos = types[2]
if blog.type == videos {
// do whatever you want
}
// carry on
}
与您的问题无关,但请注意,定义videos
时,我使用let
而不是var
。 如果值不会(也不能)更改,请始终使用let
。
另请注意,我在videos
使用小写字母v
,因为可可命名约定规定变量通常以小写字母开头,而类型,类,结构和枚举通常以大写字母开头。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.