2016-06-24 25 views
-2

我試圖像這樣定義一個變量:如何從枚舉中定義一個變量?

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 

} 

} 

我試圖在操場運行這段代碼,有這麼多的錯誤,有趣的是,如果我嘗試的一個修復,它由Xcode的提示,XCODE將會崩潰。

我需要給的strchooseAlgorithm的價值,我怎麼做到這一點?

+0

什麼是'chooseAlgorithm'該怎麼辦? – Code

+0

您無法打開「算法」類型,您必須打開一個實例。 – vadian

+0

@Code我希望能夠使用'chooseAlgorithm.Algrithm1'來獲取str的值,例如。 –

回答

0

試試這個:

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

我試過了,它說'枚舉不包含存儲屬性' –

+0

@BrightFuture看到我的文章編輯。這是完整的代碼。刪除一切。 – Code

0

您不能打開類型Algorithm您必須打開一個實例。

而且由於您需要一個參數來傳遞Algorithm實例,因此不能使用變量。

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

謝謝vadian,我真的想接受這兩個答案,但是,由於@Code的答案有自動完成的幫助,我會接受他的^ _^ –