斯威夫特字符串初始化暧昧(其中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)

+0

对不起,仍然得到了同样的编译错误,我写了一封信,本文给出了,他们说,他们使用从github.So最佳实践的最新编译器迅速仍未找到。 – user2710368

+0

您是否将问题报告给leetcode? – phu

这为我在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)); })