2014-06-11 3 views
3

스위프트는 Xcode 베타에서 범위 연산자의 부동 소수점 수를 허용하지만 결과는 바람직하지 않습니다.스위프트 범위 지원 부동 소수점?

for i in 0..109.88 { 
    i 
    sin(Double(i)) 
} 

이로 인해 매우 오랫동안 멈추거나 실행됩니다. 아마도 이것은 이번 릴리스에서 단지 감시 일 뿐이며 정수 만 허용해야합니까? 수레를 허용하는 것이 의미가 있습니까?

(업데이트 : 이것은 매우 오래된 Swift 1.0 베타 버전의 동작 일 수 있습니다.)

+5

애플의 this for 루프 구현은'for var i = 0; i! = 109.88; i ++'대신에 for var i = 0; i <109.88; 나는 ++. 이렇게하면 루프가 영원히 돌아갑니다. 적어도 내 추측이야. http://bugreport.apple.com에서 버그 보고서를 제출하십시오. –

+0

그래, 나는 동의한다. 나는 버그 보고서를 제출했다. – possen

+1

플로팅 포인트가있는 범위는 ** 패턴 일치 **와 같은 다른 곳에서 의미가 있다는 것을 지적하고 싶습니다. ** switch floatValue {case 0.5 ... 1.5 : ... –

답변

2

이것은 걸려있는 것 같습니다. 이 실행 :

for i in 0..1.5 { 
    println(i) 
} 

i는 1.0에서 무한대까지 각 반복을 증가 있음을 나타냅니다. i == {upper limit}이 결코 루프를 중단 할 때까지 기다리는 중일 수 있습니다.

1

릴리스 된 버전에서이 문제가 해결되었습니다.

Joseph A의 답변에 따르면 실수를 사용하여 값을 증가 시켰습니다. 범위 1.1 ~ 5.1을 테스트 할 때, 스위프트는 실제 범위에 자동 제너레이터가 없으므로 수행 할 수 없음을 나타 냈습니다.