RosettaCodeData/Task/Arithmetic-Complex/Swift/arithmetic-complex-2.swift

25 lines
660 B
Swift

extension Complex : CustomStringConvertible {
public var description : String {
guard real != 0 || imaginary != 0 else { return "0" }
let rs : String = real != 0 ? "\(real)" : ""
let iS : String
let sign : String
let iSpace = real != 0 ? " " : ""
switch imaginary {
case let i where i < 0:
sign = "-"
iS = i == -1 ? "i" : "\(-i)i"
case let i where i > 0:
sign = real != 0 ? "+" : ""
iS = i == 1 ? "i" : "\(i)i"
default:
sign = ""
iS = ""
}
return "\(rs)\(iSpace)\(sign)\(iSpace)\(iS)"
}
}