将 String 转换为 Character 强制我映射 {$0},这是什么意思?
converting String to Character force me to map{$0}, what's the meaning?
写一个 randomStringGenerator() 函数,我想到了这个:
private let characters = ("0123456789" + "abcdefghijklmnopqrstuvwxyz" +
"ABCDEFGHIJKLMNOPQRSTUVWXYZ").characters.map{ [=10=] }
private func generateRandomChar() -> Character {
let index = Int( arc4random_uniform( UInt32( characters.count)))
return characters[index]
}
func generateRandomString(lenght: Int) -> String {
var string = ""
for _ in 0..<lenght {
string.append(generateRandomChar())
}
return string
}
请注意我使用 "0123...".characters.map{[=11=]}
的第二行,我对这种(有效)语法的使用感到困惑。绘制地图什么都不做是什么意思?是否有更明确的语法用于相同目的?
someString.characters
returns 字符串的字符为
String.CharacterView
,这是一个 CollectionType
索引
String.CharacterView.Index
。
对于generateRandomChar()
函数来说更方便的是
由 Int
.
索引的 Array
map { [=21=] }
是
的快捷符号
map { c in
return c
}
即"identity transform" 的闭包。这是在这里完成的
因为 map()
方法应用于任何序列 returns 和 Array
:
public func map<T>(@noescape transform: (Self.Generator.Element) throws -> T) rethrows -> [T]
或者您可以使用
获得相同的结果
let characters = Array("012 ... XYZ".characters)
备注:你的generateRandomString()
函数可以简化为
func generateRandomString(length: Int) -> String {
return String((0 ..< length).map { _ in generateRandomChar() })
}
写一个 randomStringGenerator() 函数,我想到了这个:
private let characters = ("0123456789" + "abcdefghijklmnopqrstuvwxyz" +
"ABCDEFGHIJKLMNOPQRSTUVWXYZ").characters.map{ [=10=] }
private func generateRandomChar() -> Character {
let index = Int( arc4random_uniform( UInt32( characters.count)))
return characters[index]
}
func generateRandomString(lenght: Int) -> String {
var string = ""
for _ in 0..<lenght {
string.append(generateRandomChar())
}
return string
}
请注意我使用 "0123...".characters.map{[=11=]}
的第二行,我对这种(有效)语法的使用感到困惑。绘制地图什么都不做是什么意思?是否有更明确的语法用于相同目的?
someString.characters
returns 字符串的字符为
String.CharacterView
,这是一个 CollectionType
索引
String.CharacterView.Index
。
对于generateRandomChar()
函数来说更方便的是
由 Int
.
Array
map { [=21=] }
是
map { c in
return c
}
即"identity transform" 的闭包。这是在这里完成的
因为 map()
方法应用于任何序列 returns 和 Array
:
public func map<T>(@noescape transform: (Self.Generator.Element) throws -> T) rethrows -> [T]
或者您可以使用
获得相同的结果let characters = Array("012 ... XYZ".characters)
备注:你的generateRandomString()
函数可以简化为
func generateRandomString(length: Int) -> String {
return String((0 ..< length).map { _ in generateRandomChar() })
}