當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


Swift ExpressibleByStringInterpolation用法及代碼示例

協議

ExpressibleByStringInterpolation

一種可以通過字符串插值初始化的類型,該類型使用包含表達式的字符串文字。

聲明

protocol ExpressibleByStringInterpolation : ExpressibleByStringLiteral

概述

使用字符串插值在字符串文字中包含一個或多個表達式,用一組括號括起來並以反斜杠為前綴。例如:


let price = 2
let number = 3
let message = "One cookie: $\(price), \(number) cookies: $\(price * number)."
print(message)
// Prints "One cookie: $2, 3 cookies: $6."

擴展默認插值行為

通過擴展 DefaultStringInterpolation 向現有類型添加新的插值行為,該類型為 StringSubstring 等類型實現插值,以添加具有新行為的 appendInterpolation(_:) 重載。

有關詳細信息,請參閱 DefaultStringInterpolationStringInterpolationProtocol 文檔。

創建支持默認字符串插值的類型

要創建一個支持字符串文字和插值但不需要任何自定義行為的新類型,請將類型符合 ExpressibleByStringInterpolation 並實現 ExpressibleByStringLiteral 協議聲明的 init(stringLiteral: String) 初始化程序。 Swift 會自動使用 DefaultStringInterpolation 作為插值類型,並為 init(stringInterpolation:) 提供一個實現,將插值後的文字內容傳遞給 init(stringLiteral:) ,因此您不需要實現任何特定於該協議的內容。

創建支持自定義字符串插值的類型

如果您想要一個一致的類型來區分字麵量和插值段,限製可以插值的類型,支持與 String 上的插值器不同的插值器,或者避免構造包含數據的 String,該類型必須指定一個自定義StringInterpolation 關聯類型。此類型必須符合 StringInterpolationProtocol 並具有匹配的 StringLiteralType

有關詳細信息,請參閱 StringInterpolationProtocol 文檔。

可用版本

iOS 8.0+, iPadOS 8.0+, macOS 10.10+, Mac Catalyst 13.0+, tvOS 9.0+, watchOS 2.0+

相關用法


注:本文由純淨天空篩選整理自apple.com大神的英文原創作品 ExpressibleByStringInterpolation。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。