В текущей реализации Swift не подходит для вывода типов, когда некоторые обобщенные или перегруженные функции (включая операторы) используются в комбинации.
Таким образом, это улучшило бы время компиляции:
func molasses(x:Double) -> Double {
let f = floor(x * 3) * 2
let a = abs(x * 6 - f - 1)
return 1 - a
}
(Вы можете подумать, что это похоже на загромождение ...)
Или использование некоторых специфичных для типа (неуниверсальных, не перегруженных) функций может привести кскважина:
func dfloor(_ x: Double)->Double {floor(x)}
func molasses(x:Double) -> Double {
return 1 - fabs(x * 6 - dfloor(x * 3) * 2 - 1)
}