2016-09-06 749 views
1

我正在製作一個函數,它將一個枚舉作爲一個參數包含每年的每個月。我沒有一個功能做這個工作,但那不是主意。使用枚舉作爲函數參數

的功能應該與switch語句工作,所以如果我使用九月,函數應該返回9,如果我輸入可它應該返回5等

我使用的是IBM斯威夫特沙盒它給我下面的錯誤:

/swift-execution/Sources/main.swift:129:1: warning: result of call tonumeroMes(mes:)' is unused numeroMes(mes:.Septiembre)

這裏是我的枚舉:

enum meses { 
    case Enero 
    case Febrero 
    case Marzo 
    case Abril 
    case Mayo 
    case Junio 
    case Julio 
    case Agosto 
    case Septiembre 
    case Octubre 
    case Noviembre 
    case Diciembre 
} 

,這是不工作的功能:

func numeroMes(mes: meses) -> Int { 
    switch mes { 
     case .Enero: 
      return 1 
     case .Febrero: 
      return 2 
     case .Marzo: 
      return 3 
     case .Abril: 
      return 4 
     case .Mayo: 
      return 5 
     case .Junio: 
      return 6 
     case .Julio: 
      return 7 
     case .Agosto: 
      return 8 
     case .Septiembre: 
      return 9 
     case .Octubre: 
      return 10 
     case .Noviembre: 
      return 11 
     case .Diciembre: 
      return 12 
    } 
} 

numeroMes(mes:.Septiembre) 
+2

這是不是一個錯誤,那只是你不使用函數調用 – Hamish

+1

作爲一個側面說明結果的警告,會議指出,類型應該是'UpperCamelCase',因此您的枚舉應該是稱爲「Meses」。 – Hamish

+0

哦,沒錯,我把最後一行放在一張印刷品裏面,它工作正常。但是,第一個枚舉在函數中用作參數? – minijavi19

回答

3

這是一個警告不是錯誤。這只是說沒有使用致電numeroMes的結果。

順便說一句,它看起來像你可以使用枚舉的原始類型,而不是定義自定義轉換函數。以下是如何

enum Mese: Int { 
    case Enero = 1 
    case Febrero 
    case Marzo 
    case Abril 
    case Mayo 
    case Junio 
    case Julio 
    case Agosto 
    case Septiembre 
    case Octubre 
    case Noviembre 
    case Diciembre 
} 

其他值將從1增加,所以Febrero2Marzo3等。

現在無論何時您需要從枚舉中檢索原始值,只需調用rawValue即可。例如:

Mese.Febrero.rawValue // 2