这是一个leetcode问题:168. Excel Sheet Column Title @ https://leetcode.com/problems/excel-sheet-column-title/
代码在我的mac上正常工作,
但是在leetcode上得到了编译错误:
第5行:模糊地使用' init'
那么,请告诉我这个代码调用哪个String.init方法?
String(UnicodeScalar(val))
我怎么能解决这个问题?
class Solution {
func convertToTitle(n: Int) -> String {
var alphabet = [String]()
var result = ""
alphabet = (UnicodeScalar("A").value...UnicodeScalar("Z").value).map({(val: UInt32) -> String in return String(UnicodeScalar(val)); })
var num = n
while num != 0 {
num -= 1
result = alphabet[num % 26] + result
num /= 26
}
return result
}}
答案 0 :(得分:0)
这是在最新的Xcode中编译的,所以我认为它是leetcode编译器的一个问题。
我相信这里应该调用的初始化程序是init<T>(_: T)
。我不知道他们的编译器发现了什么其他初始化器。
至于如何修复它,你可以试试像String(UnicodeScalar(val) as CustomStringConvertible)
。
答案 1 :(得分:0)
这在Linux下编译2.2.1和3.0预览1,但我在使用单字符字符串(UnicodeScalar("A")
)调用UnicodeScalar构造函数时遇到了类似的问题。相反,请尝试将字符串值直接分配给UnicodeScalar
- 类型变量:
let a : UnicodeScalar = "A"
let z : UnicodeScalar = "Z"
let alphabet = (UnicodeScalar("A").value...UnicodeScalar("Z").value).map({(val: UInt32) -> String in return String(UnicodeScalar(val)); })