Правильно сформулируйте оператор if в switch - PullRequest
0 голосов
/ 02 апреля 2020

Это может быть очень рудиментарный вопрос, но я играю с предложениями if и следующим примером, которые не будут работать с ошибкой "Компилятор не может проверить это выражение в разумные сроки; попробуйте разбить выражение в отдельные подвыражения ". Кто-нибудь знает, что я делаю не так?

let a = 4

let b = 3

let c = 10

let d = 2


if ((sqrt((a - b)^2 + (c - d)^2)) > 100) {
              print("Yes")
        }

Редактировать: я понял, что сделал несколько ошибок, и теперь он работает с:

var a = 4

var b = 3

var c = 10

var d = 2

var e = (a-b)

var f = (c-d)

var g = (e*e)

var h = (f*f)

var j = Double(g+h)

if (j.squareRoot() > 5) {
              print("Yes")
      }

1 Ответ

3 голосов
/ 02 апреля 2020

Используйте лучшие типы!

import simd

distance([4, 10] as SIMD2<Double>, [3, 2]) > 100

И если вам действительно нужно работать с этими целыми числами ...

public extension SIMD where Scalar: FloatingPoint {
  init<Integer: BinaryInteger>(_ integers: Integer...) {
    self.init( integers.map(Scalar.init) )
  }
}

distance( SIMD2<Double>(a, c), .init(b, d) ) > 100
...