簡體   English   中英

如果將特定類型傳遞給Swift中的函數,如何返回nil?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM