gpt4 book ai didi

swift - 为什么要给值加上对象指针前缀? ( swift 4)

转载 作者:行者123 更新时间:2023-11-28 06:01:05 25 4
gpt4 key购买 nike

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

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)]

为什么要添加这些前缀?

最佳答案

发生这种情况是因为您的 Token 类型没有实现 CustomStringConvertible。你应该实现它。

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 - 为什么要给值加上对象指针前缀? ( swift 4),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49715599/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com