[javascript] CoffeeScript의 3 차 작업

a조건에 따라 값을 설정해야합니다 .

CoffeeScript로 가장 짧은 방법은 무엇입니까?

예를 들어 이것이 JavaScript에서 수행하는 방법입니다.

a = true  ? 5 : 10  # => a = 5
a = false ? 5 : 10  # => a = 10



답변

모든 것이 표현식이므로 결과가되므로을 사용할 수 있습니다 if/else.

a = if true then 5 else 10
a = if false then 5 else 10

식 예제에 대한 자세한 내용은 여기를 참조 하십시오 .


답변

a = if true then 5 else 10
a = if false then 5 else 10 

설명서를 참조하십시오 .


답변

거의 모든 언어에서 대신 작동해야합니다.

a = true  && 5 || 10
a = false && 5 || 10


답변

Coffeescript 자바 스크립트 삼항 연산자를 지원하지 않습니다 . 커피 스크립트 작성자 의 이유는 다음과 같습니다 .

나는 다음 사람과 마찬가지로 삼항 연산자를 좋아하지만 (실제로는 조금 더) 구문이 좋지 않습니다. 한 줄에 if / else를 넣을 수 있기 때문에 훌륭합니다. 표현.

그들의 문법은 언어의 다른 어떤 것과도 유사하지 않은 암기 할 수있는 또 다른 신비로운 마법입니다. 결과가 동일하고, 나는 if/elses항상 항상 똑같아 보였으며 항상 표현으로 컴파일되었습니다.

따라서 CoffeeScript에서는 else 절이없는 if 문과 마찬가지로 여러 줄 ifs조차도 적절한 경우 삼항으로 컴파일됩니다.

if sunny
  go_outside()
else
  read_a_book().

if sunny then go_outside() else read_a_book()

둘 다 삼항이되고, 둘 다 표현식으로 사용될 수 있습니다. 일관성이 있으며 배울 새로운 구문이 없습니다. 제안 해 주셔서 감사하지만이 티켓을 “wontfix”로 마감합니다.

github 문제를 참조하십시오 : https://github.com/jashkenas/coffeescript/issues/11#issuecomment-97802


답변

주로 사용되는 경우 두 문장으로 작성할 수도 있습니다.

a = 5
a = 10 if false

또는 더 많은 가능성이 필요한 경우 switch 문을 사용하십시오.

a = switch x
  when true then 5
  when false then 10

부울을 사용하면 크기가 커질 수 있지만 매우 읽을 수 있습니다.


답변

여러 줄 버전 (예 : 각 줄 뒤에 주석을 추가해야하는 경우) :

a = if b # a depends on b
then 5   # b is true 
else 10  # b is false


답변

CoffeeScript삼항 연산자가 없습니다. 그것이 문서에서 말하는 것입니다.

여전히 같은 구문을 사용할 수 있습니다

a = true then 5 else 10

훨씬 더 명확합니다.