I forget this too often, and write things like:
print("Size: \(thingy.getSize("Example"))")
Sometimes I feel like I’m really just writing stress-tests for the Swift syntax parser.
The above can actually be written a bit more simply, as:
print("Size:", thingy.getSize("Example"))
Not just fewer characters, but conceptually simpler – fewer nested parenthesis, and no nested string literals at all.
See, print
‘s function signature is not in fact merely print(_ s: String)
, but:
func print<Target>(
_ items: Any...,
separator: String = " ",
terminator: String = "\n",
to output: inout Target
) where Target : TextOutputStream
(I’m ignoring the specialisation that omits the to
parameter – conceptually there’s just one print
function)
It’s a pity that Swift still doesn’t have splatting, as that’d enable a nicer way of printing collections, than having to use .joined(by: …)
.