カスタム文字列補間
独自のセグメントを追加して、文字列補間を拡張します。
「カスタム文字列補間」はCoddyKit上の無料Swift Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはSwift Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Swift Academyコースには全4レッスンが含まれています。
カスタム文字列補間
Swiftでは、String.StringInterpolationにメソッドを追加して、補間の動作を拡張できます。これにより、特定の引数の型やラベルに対する処理をカスタマイズできます。
extension String.StringInterpolation {
mutating func appendInterpolation(shout value: String) {
appendLiteral(value.uppercased() + "!")
}
}
print("Message: \(shout: "hello")")appendInterpolationメソッド
カスタム補間はそれぞれ、mutating func appendInterpolation(...)として定義します。パラメーターによって、文字列内の括弧の間に記述できる内容が決まります。
extension String.StringInterpolation {
mutating func appendInterpolation(repeat text: String, times: Int) {
appendLiteral(String(repeating: text, count: times))
}
}
print("\(repeat: "ab", times: 3)")appendLiteralとappendInterpolation
カスタムメソッド内では、通常のテキストにはappendLiteralを呼び出し、値には既存の補間を再利用して出力を構築します。
extension String.StringInterpolation {
mutating func appendInterpolation(twice value: Int) {
appendLiteral("\(value)\(value)")
}
}
print("\(twice: 7)")ラベル付き補間引数
最初のパラメーターラベルが、\(shout: ...)のように使用するキーワードになります。これにより、呼び出し側で意図が明確になります。
extension String.StringInterpolation {
mutating func appendInterpolation(currency amount: Double) {
appendLiteral(String(format: "$%.2f", amount))
}
}
print("Price: \(currency: 9.5)")複数のパラメーター
カスタム補間では複数のパラメーターを受け取れるため、値と一緒にオプションも渡せます。
extension String.StringInterpolation {
mutating func appendInterpolation(_ value: Double, places: Int) {
appendLiteral(String(format: "%.\(places)f", value))
}
}
print("\(3.14159, places: 2)")値の日付をフォーマットする
よくある用途は、数値を一定の幅に埋めるなど、ドメインに応じた方法で値を表示することです。
extension String.StringInterpolation {
mutating func appendInterpolation(padded value: Int, width: Int) {
appendLiteral(String(format: "%0\(width)d", value))
}
}
print("ID: \(padded: 42, width: 5)")条件付き出力
カスタム補間にはロジックを含めることができ、入力に応じて異なるテキストを生成できます。
extension String.StringInterpolation {
mutating func appendInterpolation(yesNo flag: Bool) {
appendLiteral(flag ? "Yes" : "No")
}
}
print("Active: \(yesNo: true)")既存の補間を再利用する
メソッド内で組み込み型用のappendInterpolationを呼び出し、標準の動作を基に処理を構成できます。
extension String.StringInterpolation {
mutating func appendInterpolation(bracketed value: Int) {
appendLiteral("[")
appendInterpolation(value)
appendLiteral("]")
}
}
print("\(bracketed: 9)")デフォルトパラメーター値
カスタム補間のパラメーターにはデフォルト値を設定できるため、呼び出し側で省略できます。
extension String.StringInterpolation {
mutating func appendInterpolation(money value: Double, symbol: String = "$") {
appendLiteral(symbol + String(format: "%.2f", value))
}
}
let sym = "EUR "
print("\(money: 5.0)")
print("\(money: 5.0, symbol: sym))")カスタム補間を使う場面
コード内で同じフォーマットパターンが繰り返される場合は、カスタム補間を利用します。ロジックを集約し、呼び出し側をすっきりと記述できます。
extension String.StringInterpolation {
mutating func appendInterpolation(stars n: Int) {
appendLiteral(String(repeating: "*", count: n))
}
}
print("Rating: \(stars: 4)")カスタム補間のまとめ
String.StringInterpolationを拡張することで、繰り返しの多いフォーマット処理を、文字列内に直接埋め込める読みやすく再利用可能な構文に変えられます。
extension String.StringInterpolation {
mutating func appendInterpolation(percent value: Double) {
appendLiteral(String(format: "%.0f%%", value * 100))
}
}
print("Done: \(percent: 0.75)")クイックチェック
カスタム補間の仕組みを思い出してください。
復習:カスタム文字列補間
String.StringInterpolationをappendInterpolationメソッドで拡張すると、新しい補間構文を定義できること、appendLiteralと入れ子の補間を使って出力を構築できること、そしてラベル、複数のパラメーター、デフォルト値によって、すっきりと再利用可能なフォーマットを実現できることを学びました。
extension String.StringInterpolation {
mutating func appendInterpolation(upper value: String) {
appendLiteral(value.uppercased())
}
}
print("Hello \(upper: "swift")")よくある質問
「カスタム文字列補間」レッスンは無料ですか?
はい。「カスタム文字列補間」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Swift Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Swift Academyコースには全4レッスンが含まれています。
「カスタム文字列補間」で何を学びますか?
独自のセグメントを追加して、文字列補間を拡張します。 ブラウザで直接実行するハンズオンコードでSwift Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Swift Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのSwift Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。
「カスタム文字列補間」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このSwift Academyレッスンでコードを書いて実行できますか?
はい。すべてのSwift Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- 文字列補間の基礎
- 文字列内の数値の書式設定
- 複数行文字列リテラル
- カスタム文字列補間