2012-03-05 11 views

답변

25

사용 downTo에게 같이 : 다른 사람에 의해 지적

for (n in 100 downTo 1) { 
// 
} 
+5

왜 그렇지 않은가? "for (n in 100..1)"? 첫 번째 숫자가 더 크면 범위가 거꾸로 계산된다는 합의가 될 수 없습니까? – x2bool

1

당신은 당신이에 연결 정확한 페이지를 보면, 그하고자했다 reversed 기능에 대한 제안 거기를

은 가능한 그런 짓을하는 것입니다 for (n in (1..100).reversed())을 실행 시키지만 아직 구현되지 않은 것처럼 보입니다. .. 연산자는 항상 카운트 업합니다.

+0

나는 그 의견을보고 그것이 시대에 뒤진 것으로 기대했다. – jjnguy

+0

@jjnguy 흠 ... 아마도 그렇습니다. '86a33f8' (Jan 18 2012)은 'for (n in 100 downto 1)'과 'for (n in - (1..100))'에 대해 동일한 의미를 갖는 테스트를 추가합니다. 그들은 당신을 위해 일합니까? – hobbs

+3

- (1..100)은 더 이상 작동하지 않습니다. 올바른 구문은 (n in 100 downTo 1) –

6

반전 된 범위는 단항 연산자 인 마이너스 -(1..100)을 사용하여 지원됩니다.

해당 범위에서 메소드를 호출하려면 (-(1..100)).foreach { println(it) }과 같이 괄호로 묶어야합니다.

+4

rangeTo() 함수를 좀 더 똑똑하게 만들고 자동으로 처리 할 수 ​​있습니까? 나에게 음수 범위를 지정하면 -1에서 -100까지 계산됩니다. – jjnguy

+0

Kotlin의 범위와 관련된 다음 문제를 살펴본 후 제안 내용을 자세히 설명하는 새로운 문제를 제출하는 것이 좋습니다. [KT-861] (http://youtrack.jetbrains.com/issue/KT-861) , [KT-1045] (http://youtrack.jetbrains.com/issue/KT-1045), [KT-1076] (http://youtrack.jetbrains.com/issue/KT-1076) –

2

, 정답은

for (n in 100 downTo 1) { 
    println(n) 
} 

입니다 왜 코 틀린 팀은 100..1100 downTo 1을 선택 했습니까?

리터럴 대신 변수를 사용하려고하면 100..1 구문이 잘못 될 것이라고 생각합니다. 우리는 다음

for (n in b..a)

를 입력 한 경우 우리가 사용하고 싶었 어떤 루프 명확하지 않을 것입니다.

우리는 거꾸로 계산하려고했을 수도 있지만 ba보다 작 으면 우리 프로그램이 실제로 위쪽으로 계산됩니다! 그것은 버그의 원인이 될 것입니다.