ほとんどの場合 CVarArg...
のほうしか使わないと思うけど。
// まったく相応しくない例
let price = "5000兆"
let unit = "円"
let formatted = String(format: "%@%@欲しい!!", price, unit)
可変引数部分もラップした関数を用意したとき、こう書いちゃだめ。
// ❌意図した動作にならない
// argumentの中身は[CVarArg]であり、String(format:)には1つ目の可変引数と解釈されてしまう
func localized(format: String, _ arguments: CVarArg...) -> String {
return String(
format: NSLocalizedString(format, comment: ""),
arguments
)
}
arguments: キーを付けると
[CVarArg]` を引数として取るので、こっちが正解。
// ✅
func localized(format: String, _ arguments: CVarArg...) -> String {
return String(
format: NSLocalizedString(format, comment: ""),
arguments: arguments // argumentsキーをつけて渡す
)
}
ビルドエラーも出ないし、動作不定なので分かりづらいよね...