2016-09-06 142 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