2017-06-20 3 views
1

Der folgende Code gibt einen Fehler für jeden Wert neben "Case" "Ausdruckmuster vom Typ Int kann nicht mit Werten vom Typ (int) -> übereinstimmen Int ". Ich bin mir nicht sicher, wie ich das geben soll. Ich denke, ich muss den Int zu einem anderen Typ ändern. Ich habe versucht, eine Option, aber kein Glück den Fehler zu beheben. Der Wert, der an die Variablenvergleichsrate übergeben wird, ist ein doppelter Wert.Ausdruckmuster vom Typ Int kann nicht mit Werten vom Typ (int) übereinstimmen -> 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

Vielleicht ist der IRDComparionTerm ein optionales? Versuchen Sie, IRDComparisonTerm zu verwenden! stattdessen. – Pochi

+0

@Pochi Ihre erste Reaktion auf die Handhabung und optional sollte ** nicht ** sein, es auszupacken. – Alexander

Antwort

0

So wie der Fehler vermuten läßt, IRDComparisonTerm ist eine Funktion, die einen Int Parameter und gibt einen Int Parameter ((Int) -> Int) führt.

Sie haben vergessen, die Funktion aufzurufen.

0

Ich habe es zur Arbeit gebracht. Ein paar Änderungen. Ich erkannte, dass ich den falschen Wert durch die switch-Anweisung übergeben habe. Danke für die Antworten.

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

Das sieht unnötig kompliziert aus, wenn man es nur durch 12 dividiert. – Alexander

+0

Es gibt drei Funktionen, die man braucht, um zum comparisonTerm zu gelangen. 1. Bestimmen Sie das Fälligkeitsdatum. 2 Berechnen Sie die Anzahl der Monate von heute bis zur Fälligkeit. 3. Verwenden Sie eine switch-Anweisung, um anhand der Anzahl der Monate bis zur Fälligkeit zu bestimmen, welcher Vergleichszeitraum verwendet werden soll. Der letzte Schritt, wählen Sie die Rate basierend auf Vergleichsterm. –

+0

Oh ich dachte, du würdest 'comparisonTerm' zuweisen, nicht bewerten. Übrigens kann der statische Analysator beweisen, dass "comparisonRate" in jedem Fall der Anweisung "switch" zugewiesen ist, so dass Sie keinen Anfangswert angeben müssen. Sie können 'comparisonRate' eine' let' Konstante setzen und die anfängliche Zuweisung von '0' entfernen. – Alexander

Verwandte Themen