Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 将整数数组转换为字符串数组_Swift - Fatal编程技术网

Swift 将整数数组转换为字符串数组

Swift 将整数数组转换为字符串数组,swift,Swift,主逻辑试图做什么(从重复循环) let digitNames = [ 0: "Zero", 1: "One", 2: "Two", 3: "Three", 4: "Four", 5: "Five", 6: "Six", 7: "Seven", 8: "Eight", 9: "Nine" ] let numbers = [16, 58, 510] let strings = numbers.map { (number) -> String in var numb

主逻辑试图做什么(从重复循环)

let digitNames = [
    0: "Zero", 1: "One", 2: "Two",   3: "Three", 4: "Four",
    5: "Five", 6: "Six", 7: "Seven", 8: "Eight", 9: "Nine"
]

let numbers = [16, 58, 510]
let strings = numbers.map { (number) -> String in
    var number = number
    var output = ""

    repeat {
        output = digitNames[number % 10]! + output
        number /= 10
    } while number > 0

    return output
}
字符串被推断为
[String]


它的值是
[“OneSix”、“FiveEight”、“FiveOneZero”]
整个闭包描述了如何将像
510
这样的数字转换为像
FiveOneZero
这样的字符串,您可能已经明白了。
repeat
循环获取数字的每个数字,并将相应的字符串插入字符串
输出的开头

循环从最右边的数字到最左边的数字。通过使用
%10
,我们可以将最后一位数字与数字的其余部分分开。然后使用分隔的数字在字典中查找相应的字符串。此字符串插入到
输出的开头

现在我们除以10。请注意,我们使用的是整数,因此会进行整数除法。123/10等于12。如您所见,这将去掉最右边的数字(我们已经将最右边的数字添加到输出中!),以便在下一次迭代中处理下一个数字


我们一直这样做,直到除以10后的数字为0。只有当除法前的数字是一位数字,并且该位数字是我们处理的最后一位数字时,才会发生这种情况。

可能会帮助您尝试此数字

public extension Int {
    public var asWord: String {
        let numberValue = NSNumber(value: self)
        let formatter = NumberFormatter()
        formatter.numberStyle = .spellOut
        return formatter.string(from: numberValue)!
    }
}
使用:-


Xcode附带了一个调试器:设置断点、单步执行代码并检查变量。然后你应该快速地认识到逻辑。如果你认为答案回答你的问题,请考虑通过点击那个复选标记来接受它。这如何回答“主要逻辑试图做什么?”的问题仅仅在没有解释的情况下转储代码是没有任何帮助的。
 var arr = [String]()
        let numbers = [34,32,455]
        numbers.map({($0.asWord)
            print("\($0.asWord)")
            arr.append($0.asWord)
        })
        print(arr)