Swift中函数的返回类型不一致

时间:2015-02-07 19:21:02

标签: python ios swift return-value

我在Python中有一个函数,返回类型不一致:

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

现在,我想将其转换为swift。 Swift是否支持函数的不一致返回类型?如果有,怎么样?

如果swift可以做到这一点,那么我将不必更改Python代码的逻辑以将其转换为Swift。

2 个答案:

答案 0 :(得分:2)

由于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!"

答案 1 :(得分:1)

如果你说函数返回的东西必须返回一些东西,但这可以是任何东西:

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
}

希望有所帮助。