我在Python中有一个函数,返回类型不一致:
def my_function(input):
if(condition1):
return true
if(condition2):
return input
现在,我想将其转换为swift。 Swift是否支持函数的不一致返回类型?如果有,怎么样?
如果swift可以做到这一点,那么我将不必更改Python代码的逻辑以将其转换为Swift。
答案 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
}
希望有所帮助。