[英]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.