2017-06-20 3 views
1

次のコードは、 "Case"の横の各値にエラーが発生しています。 "型Intの式パターンは型(int) Int "である。私はこれをどうやって与えるのか分かりません。 Intを別のタイプに変更しなければならないと思っています。私はいくつかの選択肢を試みたが、エラーをクリアしなかった。可変比較レートに渡される値は2倍の値です。エラーが示唆するのと同じようInt型の式のパターンがint型の値と一致しない - > Int

 var comparisonRate: Double = 0 
     switch IRDComparisonTerm { 
     case 12: 
      comparisonRate = oneYear 

     case 24: 
      comparisonRate = twoYear 
     case 36: 
      comparisonRate = threeYear 
     case 48: 
      comparisonRate = fourYear 
     case 60: 
      comparisonRate = fiveYear 

     default: 
      comparisonRate = 0 

     } 
+0

おそらくIRDComparionTermはオプションですか? IRDComparisonTermを使用してみてください!代わりに。 – Pochi

+0

@ポーチあなたの最初の反作用への反応とオプションは、**アンラッピングを強制しないでください**。 – Alexander

答えて

0

IRDComparisonTermIntパラメータを受け取り、Intパラメータ((Int) -> Int)を返す関数です。

この関数を呼び出すことを忘れました。

0

私はそれを動作させました。いくつかの編集。私はswitch文を通して間違った値を渡していることに気付きました。返信ありがとうございます。

switch comparisonTerm { 
     case 12: 
     comparisonRate = oneYear 

     case 24: 
      comparisonRate = twoYear 

     case 36: 
      comparisonRate = threeYear 
     case 48: 
      comparisonRate = fourYear 
     case 60: 
      comparisonRate = fiveYear 

     default: 
      comparisonRate = 0 

     } 

     print(comparisonRate) 
+0

これは、12でちょうど除算するために不必要に複雑な方法に見えます。 – Alexander

+0

comparisonTermには3つの関数があります。 1.満期日を決定する。 2今日から満期までの月数を計算する。 3. switchステートメントを使用して、満期までの月数に基づいてどの比較用語を使用するかを決定します。最後のステップは、比較期間に基づいてレートを選択します。 –

+0

ああ、あなたはrateではなく、 'comparisonTerm'に割り当てていると思っていました。ところで、スタティックアナライザは 'switch'ステートメントのすべての' case 'に 'comparisonRate'が割り当てられていることを証明できるので、初期値を指定する必要はありません。 'comparisonRate'を' let'定数にして、 '0'の初期割り当てを取り除くことができます。 – Alexander

関連する問題