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