簡體   English   中英

Swift中函數的返回類型不一致

[英]Inconsistent Return Types for Functions in Swift

我在Python中有一個函數,其返回類型不一致:

def my_function(input):
  if(condition1): 
    return true
  if(condition2):
    return input

現在,我想將其轉換為快速。 Swift是否支持不一致的函數返回類型? 如果是,怎么辦?

如果swift可以做到,那么我就不必通過更改Python代碼的邏輯即可將其轉換為Swift。

由於Swift是強類型的,因此您無法定義返回不同類型的函數(除非您返回協議,例如“ Any”,在這種情況下,實現該協議的任何東西都是有效的返回類型,但是我不知道這是否是你想要什么)。 您可以做的是用兩種類型定義一個枚舉,然后返回該枚舉。 例如:

enum ReturnType {
    case Error
    case Input(String)
}

func myFunction(input: String) -> ReturnType {
    if input.isEmpty {
        return .Error
    }

    return .Input(input)
}

switch myFunction("Hello") {
    case .Error:
        println("Error!")

    case .Input(let input):
        println("Input \(input)!")
}

// Output: "Input Hello!"

如果您說該函數返回某物,則它必須返回某物,但這可以是任何東西:

func my_function( input: Any ) -> Any? {
    if( 0 == 1 ) {
        return true
    }
    if( 1 == 1 ) {
        return input
    }
    return nil
}

問號表示該函數還可以返回nil(可選)。 如果您知道它將始終返回某些內容,則可以這樣編寫,但“內容”必須是有效的:

func my_function( input: Any ) -> Any {
    if( 0 == 1 ) {
        return true
    }
    if( 1 == 1 ) {
        return input
    }
    return 5
}

希望能有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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