【发布时间】:2014-12-14 12:09:48
【问题描述】:
我正在尝试编写一个函数,该函数将一个字符数组(称为一个单词)和一个字符作为其参数,并返回一个“单词”数组,并在所有位置插入字符:
示例
typealias Word = [Character]
func insert(letter: Character, into word: Word) -> [Word] {
}
呼唤:
insert("c", into: ["a", "b"])
将返回:
[["c", "a", "b"], ["a", "c", "b"], ["a", "b", "c"]]
到目前为止我想出的最简单的是:
func insert(letter: Character, into word: Word) -> [Word] {
return Array<Int>(0...word.count).map() {
var newWord = word
newWord.insert(letter, atIndex: $0)
return newWord
}
}
我从中得到了通用版本:
extension Array
{
func insert(element: T) -> [[T]] {
return (0...self.count).map() {
var newArray = self
newArray.insert(element, atIndex: $0)
return newArray
}
}
}
但是,这涉及制作输入单词的可变副本。是否有更好/更优雅/更简单(功能性)的方式来实现这一目标?
【问题讨论】:
标签: arrays generics swift functional-programming