【发布时间】:2017-07-18 20:14:37
【问题描述】:
我需要实现一个算法,通过计算字符串的模来检查输入是否有效。
Kotlin 中的代码:
private val facteurs = arrayOf(7, 3, 1)
private fun modulo(s: String): Int {
var result = 0
var i = -1
var idx = 0
for (c in s.toUpperCase()) {
val value:Int
if (c == '<') {
value = 0
} else if (c in "0123456789") {
value = c - '0'
} else if (c in "ABCDEFGHIJKLMNOPQRSTUVWXYZ") {
value = c.toInt() - 55
} else {
throw IllegalArgumentException("Unexpected character: $c at position $idx")
}
i += 1
result += value * facteurs[i % 3]
idx += 1
}
return result % 10
}
这意味着对字符进行数学运算。
在 Swift 3 和 4 中是否有一种优雅的方式来做到这一点?
我尝试了一些类似这样的繁琐结构:
value = Int(c.unicodeScalars) - Int("0".first!.unicodeScalars)
但它甚至无法编译。 我目前正在使用带有 XCode9 的 Swift 4,但也欢迎 Swift3 回答。
【问题讨论】: