与相关值匹配的Swift枚举模式 - 无法调用函数

时间:2015-09-21 16:22:34

标签: ios swift enums pattern-matching

我在尝试使用枚举调用切换案例中调用count()函数时遇到错误我无法解释:

enum Token{

    case Name(String)

    var count:Int{ 
        switch self{
        case .Name(let string):
            return count(string)
        }
    }
}

错误为Cannot invoke 'count' with an argument list of type '((String))'

我也试过

case .Name(let string):
      return string.characters.count

错误'String' does not have a member named 'characters'

任何人都知道我做错了什么?

1 个答案:

答案 0 :(得分:2)

Swift认为您正在尝试访问count属性,而不是调用全局count函数。您可以致电Swift.count(string)

来解决此问题

Swift 1.2:

enum Token{

    case Name(String)

    var count:Int{
        switch self{
        case .Name(let string):
            return Swift.count(string)
        }
    }
}

Swift 2:

您尝试的第二种语法实际上对Swift 2来说是正确的:

        case .Name(let string):
            return string.characters.count