2016-06-24 8 views
-2

Ich versuche, eine Variable wie folgt zu definieren:Wie definiere ich eine Variable aus einer Enumeration?

import UIKit 

var str1 = "Apple" 
var str2 = "Pear" 
var str3 = "Kiwi" 

enum Algorithm { 

    case Algorithm1 
    case Algorithm2 
    case Algorithm3 

} 

var chooseAlgorithm { 

switch Algorithm { 

    case .Algorithm1: 
     return str1 
    case .Algorithm2: 
     return str2 
    case .Algorithm3: 
     return str3 

} 

} 

ich auf einem Spielplatz diesen Code zu laufen versuchte, gab es so viele Fehler, interessanterweise, wenn ich einen der Fix-its Aufforderung von Xcode versuchen , XCODE WIRD ABBRUCH.

Ich muss den Wert von str zu chooseAlgorithm geben, wie erreiche ich das?

+0

Was ist 'chooseAlgorithm' tun soll? – Code

+0

Sie können den Typ 'Algorithmus' nicht einschalten, um eine Instanz einzuschalten. – vadian

+0

@Code Ich möchte in der Lage sein, 'chooseAlgorithm.Algrithm1' zu verwenden, um beispielsweise den Wert von str zu erhalten. –

Antwort

0

Versuchen Sie folgendes:

import UIKit 

var str1 = "Apple" 
var str2 = "Pear" 
var str3 = "Kiwi" 

enum Algorithm { 
    case Algorithm1 
    case Algorithm2 
    case Algorithm3 

    func chooseAlgorithm() -> String { 
     switch self { 
     case .Algorithm1: 
      return str1 
     case .Algorithm2: 
      return str2 
     case .Algorithm3: 
      return str3 
     } 
    } 
} 

Algorithm.Algorithm1.chooseAlgorithm() 
+0

Ich habe es versucht und es sagte 'enums darf nicht gespeichert enthalten Eigenschaften' –

+0

@BrightFuture Siehe meine Nachbearbeitung. Dies ist der vollständige Code. Entferne alles andere. – Code

0

Sie können den Typ Algorithm nicht einschalten, Sie müssen eine Instanz einschalten.

Und da Sie einen Parameter benötigen, um die Algorithm Instanz zu übergeben, können Sie keine Variable verwenden.

func chooseAlgorithm(algorithm : Algorithm) -> String { 

    switch algorithm { 

     case .Algorithm1: 
      return "I'm Algorithm 1" 
     case .Algorithm2: 
      return "I'm Algorithm 2" 
     case .Algorithm3: 
      return "I'm Algorithm 3" 

    } 
} 
+0

Danke vadian, ich möchte wirklich beide Antworten akzeptieren, aber da @Codes Antwort die Hilfe der automatischen Vervollständigung hat, werde ich seine^_^ –

Verwandte Themen