Program Tip

JavaScript for-loop를 CoffeeScript로 어떻게 변환 할 수 있습니까?

programtip 2020. 11. 1. 18:31
반응형

JavaScript for-loop를 CoffeeScript로 어떻게 변환 할 수 있습니까?


for (i = 0; i < 10; i++) {

    doStuff();

}

이것이 바로 CoffeeScript로 변환하려는 JavaScript 코드입니다.


doStuff() for i in [0 .. 9]

이것은 소개 페이지에 설명되어 있습니다 : http://coffeescript.org/#loops

JP에 의한 편집 / 업데이트 :

정확한 번역은 다음과 같습니다.

doStuff() for i in [0...10]

".."대 "..."에주의해야합니다. 예를 들면 다음과 같습니다.

count = 0
doStuff() for i in [0..count] #still executes once!

그래서 당신은 생각합니다, 문제 없습니다 ... 나는 카운트 1까지 반복 할 것입니다!

count = 0
doStuff() for i in [0..count-1] #executes twice!! '0' and then '-1'

리터럴 번역 :

for (var i = 0; i < someCount; ++i)
  doStuff()

이다

for i in [0...someCount]
  doStuff()   

표시된 답변은 기능적으로 정확하지만 생성 된 코드가 원래 자바 스크립트와 일치하지 않습니다.
올바른 방법 (다음 자바 스크립트에 가장 가까운 읽기)

for (i = 0; i < 10; i++) {
  doStuff();
}

되고 doStuff() for i in [0..someCount] by 1노트 1 작성자 루프 온.

이제이 코드는 여전히 추가 _i변수를 생성 합니다. 그것으로 살 수 없다면 다음을 사용하십시오.

i=0
while i<=someCount
  doStuff()
  i++

이전 답변이 작동합니다. 그러나 드롭하면 i나에게 더 좋습니다.

for [0...10]
  doStuff()

또는

doStuff() for [0...10]

다른 솔루션은 별도의 반복자 변수를 추가 i하면 루프의 내부를 사용하는 예를 들어, doStuff(i)하지만에서 http://coffeescript.org/v1/#loops :

현재 반복 값이 필요하지 않으면 생략 할 수 있습니다.

browser.closeCurrentTab() for [0...count]

구체적으로,의 번역 for i in [0...10]for (i = j = 0; j < 10; i = ++j)의 번역 반면 for [0...10]입니다 for (i = 0; i < 10; i++).

2 점 대 3 점 ( [0..9]vs. [0...10])에 대한 다른 의견의 토론에 유의하십시오 .

참고 URL : https://stackoverflow.com/questions/7337351/how-can-i-convert-a-javascript-for-loop-to-coffeescript

반응형