25 lines
660 B
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)"
|
|
}
|
|
}
|