![](/img/trans.png)
[英]swift3 append function does not work inside of firebase observeSingleEvent
[英]How does append function work in Swift?
有人可以解釋一下這句話有什么問題嗎?
var someString = "Welcome"
someString.append("!")
但是,當我將代碼替換為
var someString = "Welcome"
let exclamationMark : Character = "!"
someString.append(exclamationMark)
提前致謝
在Swift中,沒有字符文字(例如,C語言中的'c'
),只有String
文字。
然后,您在String
定義了兩個函數: append
,以附加單個字符, extend
,以附加整個String。 所以這有效:
var someString = "Welcome"
someString.extend("!")
如果您確實想使用append
,則可以通過調用Character
的構造函數來強制將一個字符的String
文字轉換為Character
:
someString.append(Character("!"))
或使用類型轉換:
someString.append("!" as Character)
或像使用額外變量一樣使用類型注釋:
let exclamationMark: Character = "!"
someString.append(exclamationMark)
String
有2個重載的append(_:)
mutating func append(x: UnicodeScalar)
mutating func append(c: Character)
而且Character
和UnicodeScalar
符合UnicodeScalarLiteralConvertible
enum Character : ExtendedGraphemeClusterLiteralConvertible, Equatable, Hashable, Comparable {
/// Create an instance initialized to `value`.
init(unicodeScalarLiteral value: Character)
}
struct UnicodeScalar : UnicodeScalarLiteralConvertible {
/// Create an instance initialized to `value`.
init(unicodeScalarLiteral value: UnicodeScalar)
}
"!"
在這種情況下是UnicodeScalarLiteral
。 因此,編譯器無法確定"!"
是Character
或UnicodeScalar
,應調用哪個append(_:)
方法。 因此,您必須明確指定它。
您會看到: "!"
通過以下代碼可以是UnicodeScalar文字:
struct MyScalar: UnicodeScalarLiteralConvertible {
init(unicodeScalarLiteral value: UnicodeScalar) {
println("unicode \(value)")
}
}
"!" as MyScalar // -> prints "unicode !"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.