gpt4 book ai didi

ios - ClosedInterval 不同的声明

转载 作者:搜寻专家 更新时间:2023-11-01 06:24:15 27 4
gpt4 key购买 nike

这两个 statemens 工作正常并返回相同的值:

println(("A"..."Z").contains("B"))

var range = "A"..."Z"
println(range.contains("B"))

但如果我尝试这样做:

var c : Character = "B"

var range = "A"..."Z"
//println(range.contains(c))

println(("A"..."Z").contains(c))

注释行输出以下错误:

'Character' is not convertible to 'String'

这是怎么回事?变量 c 不是 Character 类型?

最佳答案

不是那个c不是 Character ,就是那个 rangeClosedInterval<String> .

"A" 这样的字符串文字可以转换为 StringCharacter因为两者都实现了 ExtendedGraphemeClusterLiteralConvertible .

当您定义 range 时作为"A"..."Z" ,编译器无法推断您将如何使用 range稍后只需使用以下方式定义它:ClosedInterval<String> .

当您定义一个范围并立即使用它时,如:("A"..."Z").contains(c) ,编译器可以看到 cCharacter所以它将范围创建为 ClosedInterval<Character> .

你可以强制range成为ClosedInterval<Character>并看到 contains适用于 Character小号:

var range: ClosedInterval<Character> = "A"..."Z"
var c : Character = "B"
println(range.contains(c))

关于ios - ClosedInterval<String> 不同的声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26539175/

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