Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么将对象指针前缀添加到值中?(Swift 4)_Swift_Enums_Swift4 - Fatal编程技术网

为什么将对象指针前缀添加到值中?(Swift 4)

为什么将对象指针前缀添加到值中?(Swift 4),swift,enums,swift4,Swift,Enums,Swift4,我正在尝试解析字符串并将其保存到数组中: enum Token { case Number(Int) case Minus case Plus } var tokens = [Token]() for char in ["1","-","3","+","9"] {switch char { case "0"..."9": //start of a number - need to grab the rest

我正在尝试解析字符串并将其保存到数组中:

enum Token {
    case Number(Int)
    case Minus
    case Plus
}

var tokens = [Token]()

for char in ["1","-","3","+","9"] {switch char {
        case "0"..."9":
            //start of a number - need to grab the rest
            let digit = Int(String(char))!
            tokens.append(.Number(digit))
        case "+":
            tokens.append(.Plus)
        case "-":
            tokens.append(.Minus)
        default:
            //smth unexpected - need to send back an error
            print("ends...")
        }
}

print(tokens)
但是这些值加上了前缀,看起来像指针。上述代码的结果是:

[__lldb_expr_14.Token.Number(1), __lldb_expr_14.Token.Minus, __lldb_expr_14.Token.Number(3), __lldb_expr_14.Token.Plus, __lldb_expr_14.Token.Number(9)]
如何读取这些前缀,使生成的数组看起来像:

[Token.Number(1), Token.Minus, Token.Number(3), Token.Plus, Token.Number(9)]

为什么要添加这些前缀?

发生这种情况是因为您的
令牌
类型没有实现
customStringConverable
。你应该实施它

enum Token : CustomStringConvertible {
    case Number(Int)
    case Minus
    case Plus

    var description: String {
        // return a string that describes "self"
    }
}
实现这一点的一种可能方法是:

var description: String {
    switch self {
        case .Number(let x): return "Number(\(x))"
        case .Minus: return "Minus"
        case .Plus: return "Plus"
    }
}

还要注意,枚举案例应该在
camelCase
中,而不是
PascalCase

中,非常感谢!我是Swift的新手。这对我帮助很大。