당신은 정말 그러나, Swift Book을 읽는 것부터 시작해야합니다
long
는 스위프트의 표준 유형 (하나 :)를 찾기 위해 관리 한 경우 확실하지 없습니다. 사용할 정확한 정수 유형은 Int
입니다 (정확한 크기가 중요하지 않은 경우 -하지만 그렇지 않은 경우). 그러나 CoreLocation의 CLLocationSpeed는 Double
의 타원체이며 속도 계산을 위해이를 고수해야합니다.
스위프트에서 유형 간의 대부분의 변환은 암시 적으로 발생하지 않습니다. Double
이 Int
이되도록하려면 명시 적으로 변환해야합니다 (예 : let ms = Int(LocationManager.location.speed)
).
C와 유사한 언어에서 온 경우 고통스러운 느낌입니다. 그러나 그 뒤에는 좋은 이유가 있습니다. 예를 들어 부동 소수점 숫자를 정수형에 할당 할 때 부동 소수점 숫자의 소수 부분은 어떻게됩니까? 함수가 부동 소수점 숫자를 반환하고 우발적으로 잘림 버그가 발생했다는 사실을 잊었을까요?
이를 보완하기 위해 스위프트에는 유형 추론도 있습니다. 명시 적으로 유형을 제어하지 않으려면 그래서, 당신도 그들에게 줄 필요가 없습니다 :
당신은 그냥두고, 유형을 제공 할 필요가 없습니다 시간의 대부분은에서를 유추 할
// type of ms is automatically inferred to be CLLocationSpeed (alias for Double)
let ms = LocationManager.location.speed
// 3.6 floating-point literal is automatically converted to appropriate type
// type and kph is automatically a Double
let kph = ms * 3.6
문맥.