我正在使用
var chars = Array(string.hasPrefix("#") ? string.characters.dropFirst() : string.characters)
收到此错误
“'?:'表达式中的结果值具有不匹配的类型'String.SubSequence'(又名'Substring')和'String'”“
如何解决?
答案 0 :(得分:0)
dropFirst()
从您的字符串中返回一个Substring
,并且编译器抱怨您返回的是Substring
类型,如果为true,则返回String
类型,否则为p
只需将Substring
转换为String
到String(yourSubString)
,它应该可以工作
var chars = Array(string.hasPrefix("#") ? String(string.characters.dropFirst()) : string.characters)
答案 1 :(得分:0)
三元?:
运算符的第二和第三操作数必须具有相同的类型。 dropFirst
返回Substring
,而characters
是String
,从而导致错误。
要注意的另一件事是,自Swift 4起,您不需要.characters
。
您的整个表达式可以重新排列为:
var chars = string.hasPrefix("#") ? Array(string.dropFirst()) : Array(string)
这样,最后两个操作数都属于[Character]
类型,从而消除了错误。