斯威夫特字符串初始化暧昧(其中String.init方法做到这一点的代码调用?)
问题描述:
这是一个问题,本文给出了:168 Excel工作表列标题@ https://leetcode.com/problems/excel-sheet-column-title/斯威夫特字符串初始化暧昧(其中String.init方法做到这一点的代码调用?)
的代码工作正常,在我的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
}}
答
这编译在最新的Xcode的,所以我认为它与本文给出的编译器的问题。
我相信这里应该调用的初始化器是init<T>(_: T)
。我不知道他们的编译器找到了什么其他的初始化器。
至于如何解决它,你可以尝试像String(UnicodeScalar(val) as CustomStringConvertible)
。
答
这为我在Linux 2.2.1和3.0预览版1下编译,但我在调用UnicodeScalar构造函数时使用单字符字符串(UnicodeScalar("A")
)遇到类似的问题。相反,尝试分配字符串值直接UnicodeScalar
-typed变量:
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)); })
对不起,仍然得到了同样的编译错误,我写了一封信,本文给出了,他们说,他们使用从github.So最佳实践的最新编译器迅速仍未找到。 – user2710368
您是否将问题报告给leetcode? – phu