プロトコル


StringInterpolationProtocol


ビルド中の文字列リテラルの内容を補間で表します。





宣言


protocol StringInterpolationProtocol



概観


ExpressibleByStringInterpolation 型には、StringInterpolationProtoco lに準拠する StringInterpolation 型が関連しています。Swift は、"The time is \(tume)." のような式を MyString として、以下のような一連の文に変換します。

var interpolation = MyString.StringInterpolation(literalCapacity: 13,

interpolationCount: 1)


interpolation.appendLiteral("The time is ")

interpolation.appendInterpolation(time)

interpolation.appendLiteral(".")


MyString(stringInterpolation: interpolation)

StringInterpolation 型は、appendLiteral(_:)appendInterpolation メソッドに渡されたセグメントを収集し、それらを全体にアセンブルして、必要に応じて変換する責任があります。すべてのセグメントが付け加えられると、補間は作成中の型の init(stringInterpolation:) イニシャライザに渡され、StringInterpolation から累積データを抽出しなければなりません。


単純な場合では、ExpressibleByStringLiteral プロトコルに準拠する型の補間型として DefaultStringInterpolation を使用できます。デフォルトの補間を使用するには、型を ExpressibleByStringInterpolation に準拠させ、init(stringLiteral:String) を実装します。補間の中の値は文字列に変換され、他の文字列リテラルと同じようにそのイニシャライザに渡されます。


文字列補間の処理


カスタム補間型では、補間された各セグメントは、特別な appendInterpolation メソッドの呼び出しに変換されます。補間の括弧の内容は、呼び出しの引数リストとして扱われます。その引数リストには、複数の引数と引数ラベルを含めることができます。


カスタム型の appendInterpolation メソッドは、Void を返す変異インスタンスメソッドでなければなりません。このコードは、ユーザ入力に特別な検証を提供する appendInterpolation メソッドのカスタム補間型の宣言を示しています:

extension MyString.StringInterpolation {

mutating func appendInterpolation(validating input: String) {

// Perform validation of `input` and store for later use

}

}

この補間メソッドを使用するには、validating パラメータラベルを使用した補間で文字列リテラルを作成します。

let userInput = readLine() ?? ""

let myString = "The user typed '\(validating: userInput)'." as MyString

appendInterpolation メソッドは、実質的にすべてのメソッドの機能をサポートします。それらは任意の数のパラメータを持つことができ、パラメータの一部またはすべてにラベルを指定でき、デフォルト値を提供でき、可変個引数パラメータを持つことができ、汎用型のパラメータを持つことができます。最も重要なことは、それらはオーバーロードされる可能性があるため、StringInterpolationProtocol に準拠する型は、異なる動作を持ついくつかの異なる appendInterpolation メソッドを提供できます。appendInterpolation メソッドも throw できます。ユーザがこれらの補間のいずれか一つでリテラルを作成する場合、文字列リテラルを try またはそのバリアントの 1 つでマークしなければなりません。



トピックス




関連型




イニシャライザ




インスタンスメソッド


関連




準拠する型




以下も見よ




文字列リテラル
















トップへ












トップへ












トップへ












トップへ












トップへ
目次
Xcode の新機能

  • 利用可能
  • iOS 8.0+
    iPadOS 8.0+
    macOS 10.10+
    Mac Catalyst 13.0+
    tvOS 9.0+
    watchOS 2.0+
    Xcode 10.2+

    フレームワーク

    Swift 標準ライブラリ

    このページには

  • 宣言
  • 概観
  • トピックス
  • 関連
  • 以下も見よ












  • トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ