// 从字符串解析整数,演示基于 Option 的异常处理
// LJJ 2024.12.10
func parseInt(text: String): Option<Int64> {
if (text.isEmpty() || text == '-') {
return None
}
var sign = if (text[0] == 45u8) { 1 } else { 0 }
var sum = 0
for (i in sign..text.size) {
if (text[i] > 57u8 || text[i] < 48u8) {
return None
}
let digit = Int64(text[i] - 48u8)
sum = 10 * sum + digit
}
return if (sign == 1) { -sum } else { sum }
}
main() {
let number = parseInt("-123456")
println(number.getOrThrow())
let result = parseInt("123-456")
if (result.isNone()) {
println("parse failed")
}
}