2017-07-21 7 views
1

Swiftには何らかのオブジェクトを返す関数があります。そのオブジェクトはオプションです。それが存在しなければ、私はゼロを返すべきだと思うが、スウィフトはそれを禁じる。コード機能していない、次のとおりです。swift関数でnilを返す

func listForName (name: String) -> List { 

     if let list = listsDict[name] { 
      return list 
     } else { 
      return nil 
     } 
    } 

それは言う:error: nil is incompatible with return type 'List'

しかし、私は空のListオブジェクトのようなものを返すようにしたくない、私はオプションが空の場合、何も返さないようにしたいです。どうやってするか? List?

func listForName (name: String) -> List? { 

    if let list = listsDict[name] { 
     return list 
    } else { 
     return nil 
    } 
} 

それとも、それがオプションであるか、またはリスト自体を持っていますので、どちらかlistsDict[name]を返す:あなたはオプションを返す必要がエラーを修正する

+0

戻り値の型 'List'はオプションの変更ではないので、通常は' List? 'に戻ります。 – CarpenterBlood

+0

@CarpenterBloodありがとう –

答えて

7

func listForName (name: String) -> List? { 
    return listsDict[name] 
} 

しかし、私は空のListオブジェクトのようなものを返すようにしたくない、私はオプションが空の場合、何も返さないようにしたいです。どうやってするか?

あなたはいくつかの選択肢があります。

  • 戻るオプションの一覧は(?リスト)
  • 戻りデータが
  • 戻る例外が検出されない空のリストは
  • (文脈に依存します)列挙型を使用していずれか/結果を表します(オプションに似ていますが、ユースケースに応じてより良いことがあります)
+0

そして本体は、関数の全ポイントを大きく否定する 'return listsDict [name] 。 – rmaddy

+0

しかし、実際には詐欺ではない、彼の質問は: '私はオプションが空のときに何も返さない。それをどうやるの? "上記のようにそれを行うにはいくつかの方法があります – nathan

関連する問題