web-dev-qa-db-ja.com

Swift 4の文字列への追加

Swift 4。でStringに追加する最良の方法を考えていました。AppleはstringName.characters.append(“hi”)よりも優れた方法を作成しましたか?

編集:String.append()を使用できるようになっていたことを私が知らなかったことに注意してください。 Swift 4ではもう.charactersを使用する必要がないという事実を理解しようとしていました。新しい人々をSwift 4は、文字列変数の後に.charactersを使用しないことで時間を節約できるように、質問をすることによって行います。

3
the_kaseys

Stringインスタンスで直接 append(_:) を呼び出すことができます。

_var stringName = ""
stringName.append("hi")
print(stringName) // hi
stringName.append(" John")
print(stringName) // hi John
_

同様に、連結には _+=_演算子のString を使用できます。

_var stringName = ""
stringName += "hi"
print(stringName) // hi
stringName += " John"
print(stringName) // hi John
_

不思議なことに、これらのアプローチの両方の実装は、同じバックエンド(/ core)append(...)呼び出しを利用します。引用 Swift/stdlib/public/core/String.Swift

_extension String {

  // ...

  public mutating func append(_ other: String) {
    _core.append(other._core)
  }

  // ...
}

extension String {

  // ...

  public static func += (lhs: inout String, rhs: String) {
    if lhs.isEmpty {
      lhs = rhs
    }
    else {
      lhs._core.append(rhs._core)
    }
  }

  // ...
}
_
12
dfri

Swift 4のドキュメントによると、文字列値を加算演算子(+)で加算(または連結)して、新しい文字列値を作成できます。

let string1 = "hello"
let string2 = " there"
var welcome = string1 + string2
// welcome now equals "hello there"

加算代入演算子(+ =)を使用して、既存の文字列変数に文字列値を追加することもできます。

var instruction = "look over"
instruction += string2
// instruction now equals "look over there"

String型のappend()メソッドを使用して、String変数にCharacter値を追加できます。

let exclamationMark: Character = "!"
welcome.append(exclamationMark)
// welcome now equals "hello there!"
0