2016-12-12 5 views
0

私はSwiftを初めて使っています。関数を標準の1つの値だけで返すことは可能ですか、場合によっては2または3の値で返すことは可能ですか?あなたはタプルを返すことができいくつかの状況で1つの値を返す関数は、2または3の値を返します(その逆もあります)。

+4

タプルまたは配列を返すことを検討しますか? – CollinD

+0

私はすでに結果を返す関数を持っています。私は今、特定のケースでは、この関数から2つの結果を返す必要があることを知りました。だから私はif文などを構築しましたが、結局私は1つの値しか返すことができません。他のケースの99%については、私はただ1つの結果が必要です。 – fbelfort

+0

タプルのようなサウンドは、必要なことをするでしょう。問題を説明するためにコードを投稿することを検討してください。 – CollinD

答えて

2

func functionThatReturnsTuple(numberOfElementsToReturn: Int) -> (String?, Int?) { 
    if numberOfElementsToReturn == 1 { 
     return ("One", nil) 
    } 
    if numberOfElementsToReturn == 2 { 
     return ("One", 2) 
    } 
    return (nil, nil) 
} 

あなたは配列を返すことができます。両方の例はoptionalsを使用することを

func functionThatReturnsArray(numberOfElementsToReturn: Int) -> [String] { 

    if numberOfElementsToReturn == 3 { 
     return ["One", "Two", "Three"] 
    } 
    .... 
    return [] 
} 

が注目して、それらを処理するようにしてください。ちょうどif caseswitchValueのケースを確認し

enum Value<A, B, C> { 
    case single(A) 
    case pair(A, B) 
    case triplet(A, B, C) 
} 

func yourFunc<A, B, C>(numberOfParameters: Int) -> Value<A, B, C> { 
    // determine how many params you need to return, and return them 
} 

とINNあなたouterコード:

+0

私はタプルバリアントのために行きました。私はタプルの最初の数を標準結果として使用し、2番目の値はオプションでnilとして使用しています。すべて正常に動作します。 – fbelfort

0

別の方法としては、列挙型を使用することができます。

関連する問題