Swift String init不明确(String.init方法执行此代码调用?)

时间:2016-02-20 03:48:21

标签: string swift initializer

这是一个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
    }}

2 个答案:

答案 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)); })