我有一個數組接收Int
類型的值,我想在對這些值執行一些轉換之後返回String
的數組。無法轉換類型'Array <String>?'的值指定類型'Array <String>?'
他們看起來像這樣:
var ints: Array<Int> = [1, 2, 3, 4]
var strings: Array<String> = Array<String>()
我正在執行每個陣列上的映射:
func convertToStrings(array: Array<Int>?) -> Array<String>? {
var stringResult: Array<String>? = nil
if let x = array {
stringResult = x.map { "Transformed: \($0)" }
}
return stringResult
}
其設置爲全局函數的作品,但我想它附加也可以作爲Array的擴展。當我嘗試它,像這樣:
extension Array {
static func convertToStrings(array: Array<Int>?) -> Array<String>? {
var stringResult: Array<String>? = nil
if let x = array {
stringResult = x.map { "Transformed: \($0)" }
}
return stringResult
}
}
這種用法:
var result: Array<String>? = Array.convertToStrings([1, 2])
print("result: \(result)")
我得到這個錯誤:
error: cannot convert value of type 'Array?' to specified type 'Array?'
我不知道爲什麼找生成此錯誤。
將這個函數封裝到更少的全局域空間並附加一個更合理的範圍的好方法是什麼?
編輯:第2部分
我想使上述功能,其中,I取字符串類型的數組,並轉換爲Int的陣列時的字符的每個串的計數大於的反向0.但是,我似乎無法做到這一點,因爲類似於_IntegerType的唯一協議是_CocoaStringType。
有幾件事情:
- 我不知道我是否應該使用一種以下劃線 前綴
- _CocoaStringType不會從任何 允許string.characters.count繼承使用。
如果您想以另一種方式將字符串長度非空時從Int轉換爲字符串,您將使用哪種類型?字符串是一個結構,無法找到相應的協議,類似於_IntegerType。 –
你的意思是從字符串到int? – Lukas
我在回答中添加了 – Lukas