2016-02-20 47 views
0

這是一個問題,本文給出了: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 
    }} 

回答

0

這編譯在最新的Xcode的,所以我認爲它與本文給出的編譯器的問題。

我相信這裏應該調用的初始化器是init<T>(_: T)。我不知道他們的編譯器找到了什麼其他的初始化器。

至於如何解決它,你可以嘗試像String(UnicodeScalar(val) as CustomStringConvertible)

+0

對不起,仍然得到了同樣的編譯錯誤,我寫了一封信,本文給出了,他們說,他們使用從github.So最佳實踐的最新編譯器迅速仍未找到。 – user2710368

+0

您是否將問題報告給leetcode? – phu

0

這爲我在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)); })