DefaultStringInterpolation
Represents a string literal with interpolations while it is being built up.
@frozen struct DefaultStringInterpolation
Do not create an instance of this type directly. It is used by the compiler when you create a string using string interpolation. Instead, use string interpolation to create a new string by including values, literals, variables, or expressions enclosed in parentheses, prefixed by a backslash (\(
…)
).
let price = 2
let number = 3
let message = """
If one cookie costs \(price) dollars, \
\(number) cookies cost \(price * number) dollars.
"""
print(message)
// Prints "If one cookie costs 2 dollars, 3 cookies cost 6 dollars."
When implementing an ExpressibleByStringInterpolation
conformance, set the StringInterpolation
associated type to DefaultStringInterpolation
to get the same interpolation behavior as Swift’s built-in String
type and construct a String
with the results. If you don’t want the default behavior or don’t want to construct a String
, use a custom type conforming to StringInterpolationProtocol
instead.
Extending default string interpolation behavior
Code outside the standard library can extend string interpolation on String
and many other common types by extending DefaultStringInterpolation
and adding an appendInterpolation(...)
method. For example:
extension DefaultStringInterpolation {
fileprivate mutating func appendInterpolation(
escaped value: String, asASCII forceASCII: Bool = false) {
for char in value.unicodeScalars {
appendInterpolation(char.escaped(asASCII: forceASCII))
}
}
}
print("Escaped string: \(escaped: string)")
See StringInterpolationProtocol
for details on appendInterpolation
methods.
DefaultStringInterpolation
extensions should add only mutating
members and should not copy self
or capture it in an escaping closure.
Citizens in Swift
Conformances
protocol CustomStringConvertible
A type with a customized textual representation.
protocol Sendable
A type whose values can safely be passed across concurrency domains by copying.
protocol StringInterpolationProtocol
Represents the contents of a string literal with interpolations while it’s being built up.
protocol TextOutputStream
A type that can be the target of text-streaming operations.
Members
init(literalCapacity: Int, interpolationCount: Int
) Creates a string interpolation with storage pre-sized for a literal with the indicated attributes.
var description: String
func appendInterpolation<T>(T
) Interpolates the given value’s textual representation into the string literal being created.
func appendInterpolation<T>(T
) Interpolates the given value’s textual representation into the string literal being created.
func appendInterpolation<T>(T
) Interpolates the given value’s textual representation into the string literal being created.
func appendInterpolation<T>(T
) Interpolates the given value’s textual representation into the string literal being created.
func appendInterpolation(Any
.Type) func appendLiteral(String
) Appends a literal segment of a string interpolation.
func write(String
)