태그 보관물: tips

tips

Haxe에서의 골프 팁 수 있고 최소한 Haxe에 특정한 아이디어를

Haxe 에서의 골프에 대한 일반적인 팁은 무엇입니까 ? 코드 골프 문제에 적용 할 수 있고 최소한 Haxe에 특정한 아이디어를 찾고 있습니다 (예 : “댓글 제거”는 답이 아닙니다).

답변 당 하나의 팁을 게시하십시오.

Haxe는 여기 에서 온라인으로 실행할 수 있습니다 !



답변

문자열 보간

Haxe는 작은 따옴표 문자열에서 문자열 보간 을 지원 합니다 . JavaScript ES6의 템플릿 문자열과 같이 다음을 사용하여 문자열에 표현식을 포함 할 수 있습니다 ${...}.

trace('2 + 2 = ${2 + 2}');

그러나 ES6과 달리 표현식이 단일 변수 인 경우 중괄호를 생략 할 수 있습니다.

var x = 2 + 2;
trace('2 + 2 = $x');

이 두 예제는 모두 print 2 + 2 = 4입니다.


답변

배열 이해

Haxe는 배열 이해를 지원합니다.

trace([for (i in 0...5) i]); // Prints 0,1,2,3,4

다른 많은 언어 들과는 달리, 당신은 또한 while이해에 사용할 수 있습니다 :

var i = 5;
trace([while (i > 0) i--]); // Prints 5,4,3,2,1

필요한 배열의 길이를 모르는 경우 매우 유용합니다.

당신은 또한 체인 for, while그리고 if문 :

trace([for (x in ['A','B','C','D'])
       for (y in ['x','y'])
       if (x + y != "Cx")
       x + y
]); // Prints Ax,Ay,Bx,By,Cy,Dx,Dy


답변

범위 연산자

Haxe에는 ...정수 범위를 만드는 데 사용할 수 있는 범위 연산자 가 있습니다. 예를 들어, 대신

var i = 0;
while (i < 10) trace(i++);

당신은 이것을 할 수 있습니다 :

for (i in 0...10) trace(i++);

에 대한 세부 사항 x...y:

  • x그리고 y둘 다 Ints 여야합니다.
  • x보다 클 수 없습니다 y.
  • 이것은 모든 Iterable과 같은 장소에서 사용될 수 있는 IntIterator 객체를 반환합니다 .

답변

조건부로 명령문 실행

분명히 다음을 사용하여 조건부로 아무것도 실행할 수 있습니다 if.

if(n>5)doSomething(n);

그러나 위와 같이 하나의 명령문 만있는 경우 삼항 조건부 연산자를 사용하여 바이트를 저장할 수 있습니다.

n>5?doSomething(n):0;

을 사용하여 다른 바이트를 저장하는 &&경우도 있지만 &&두 표현식 모두 부울을 반환하는 경우에만 작동 하기 때문에 매우 드 rare니다 .

n>5&&doSomething(n);

이 한 가지 중요한 예외는 키워드 : Haxe가로 실행되는 경우 return, break또는 continue 어디서든 즉시 실행하고 작업 한 어떤 표현 종료됩니다. 이것은 이것 대신에 :

if(n>5)return n;

이 작업을 수행하면 2 바이트를 절약 할 수 있습니다.

n>5&&return n;


답변

표현식에 키워드 사용

Haxe의 또 다른 특이한 특징은 모든 것이 표현 이라는 것입니다 . 예를 들어이 코드는 완벽하게 유효합니다.

function(n){while(n>0)n%4==1?return 6:n--;return 3;}

좋아, 그것은 쓸모없는 예이지만, 당신은 내 요점을 얻길 바랍니다. 대부분의 키워드에서 작동합니다.

function(n){while(n>0)n%4==1?break:n--;return n;}

이렇게하면 물론 짧아도 if/ else인라인 을 사용할 수 있습니다 .p=if(n>1)7else 4;p=n>1?7:4;

인라인을 사용할 수없는 키워드

  • var -컴파일러는 Void를 값으로 사용하려는 것에 대해 불평합니다.
  • for/ while-위와 동일하지만, 배열 이해에 사용할 수 있습니다 .

답변

기능 괄호 생략

대부분의 언어와 달리 Haxe의 모든 것은를 포함한 표현{blocks} 입니다. 따라서, Haxe 프로그램의 어느 곳에서든지 ( 괄호 제외) 중괄호 switch는 단일 명령문 만 포함하면 생략 될 수 있습니다. 그래서 이것 대신에 :

function f(n){return Math.pow(3,n);}

당신은 이것을 할 수 있습니다 :

function f(n)return Math.pow(3,n);

많은 기능에 쉬운 2 바이트 저장.

함수에 여러 명령문이 포함되어 있어도 블록 외부 로 이동하여 바이트를 절약 할 수 있습니다 return .

function f(a){var b=a*a;return a<0?-b:b;}
function f(a)return{var b=a*a;a<0?-b:b;}

이것은 블록이 블록 내부의 마지막 표현식으로 평가되기 때문에 작동합니다.


답변