Написание однострочного кода с использованием тернарного оператора:
let rawValue: String = ...
let subtype: String? = ...
let display = subtype != nil ? "\(rawValue) (\(subtype))" : rawValue
Компилятор жалуется: String interpolation produces a debug description for an optional value; did you mean to make this explicit?
Добавьте !
, чтобы принудительно развернуть subtype
в интерполяции строк:
let display = subtype != nil ? "\(rawValue) (\(subtype!))" : rawValue
Теперь SwiftLint жалуется: Force Unwrapping Violation: Force unwrapping should be avoided. (force_unwrapping)
Как переписать этот однострочный код?
Я бы сопоставил необязательный параметр с интерполированной строкой и использовал ??
для предоставления значения по умолчанию:
let display = subtype.map { "\(rawValue) (\($0))" } ?? rawValue