简单的问题 - 希望,我正在尝试生成一个简单的字符数组,其中包括:
// trying to do something like this (pseudo code):
let letters:[Character] = map(0..<26) { i in 'a' + i }
Run Code Online (Sandbox Code Playgroud)
并尝试了以下无济于事
let a = Character("a")
let z = Character("z")
let r:Range<Character> = a..<z
let letters:[Character] = map(a..<z) { i in i }
Run Code Online (Sandbox Code Playgroud)
我意识到Swift使用Unicode,这样做的正确方法是什么?
(注意,这不是关于与传统Obj-C char互操作的问题,严格来说在Swift中进行测试等).
在这个例子中:
var str1 = "hello"
var str2 = "Hello"
if str1 < str2 { print("hello is less than Hello")}
else {print("hello is more than Hello")}
Run Code Online (Sandbox Code Playgroud)
在什么基础上发现str1大于str2?
在我们的代码中,我们发现了一个错误,即没有正确编写字母.而不是"0123456789abcdefghijklmnopqrstuvwxyz",我们有"0123456789abcdefghijklmnoqprstuvwxyz".所以我们想知道是否可以通过声明由字符范围制作的字符串来避免类似的拼写错误?
使用Swift 4.1+,我们尝试:
let 1: String = "0"..."9" + "a"..."z"
Run Code Online (Sandbox Code Playgroud)
相邻运算符位于非关联优先级组"RangeFormationPrecedence"中
let 2: String = ("0"..."9") + ("a"..."z")
Run Code Online (Sandbox Code Playgroud)
二元运算符'+'不能应用于两个'
ClosedRange<String>'操作数
let 3: String = String("0"..."9") + String("a"..."z")
Run Code Online (Sandbox Code Playgroud)
不能调用类型"字符串"初始化与类型"参数列表
(ClosedRange<String>)"
let 4: String = (Character("0")...Character("9")) + (Character("a")...Character("z"))
Run Code Online (Sandbox Code Playgroud)
二元运算符'+'不能应用于两个'
ClosedRange<Character>'操作数
let 5: String = String(Character("0")...Character("9")) + String(Character("a")...Character("z"))
Run Code Online (Sandbox Code Playgroud)
不能调用类型"字符串"初始化与类型"参数列表
(ClosedRange<Character>)"