체다에서 골프 팁


12

체더 치즈

Cheddar 는 사용자 Downgoat가 개발 한 고급, 기능적 + 객체 지향 프로그래밍 언어로 프로그래밍이 쉽고 빠르며 직관적입니다.

체다 골프에 대한 일반적인 팁은 무엇입니까? 문제에 적용 할 수 있고 적어도 체다에 특정한 아이디어를 찾고 있습니다 (예 : "불필요한 공백 제거"는 답이 아닙니다).

답변:


3

기능화 된 속성 사용

함수에서 속성 만 사용하는 경우 :

A->A.long.property(n).foo.bar

기능화 된 특성을 사용하여 일부 바이트를 저장할 수 있습니다.

@.long.property(n).foo.bar

로 functionized property에서 변수를 참조 할 수 있습니다 $0.


2

문자열 시퀀스에 문자열 연산자 사용

나는 @"문자열을 다루는 다른 일을 하는 연산자 에 대해 이야기 하고 있습니다. 이것은 꽤 많이 사용되지만 이것이 내가 가장 좋아하는 용도 중 하나입니다.

이것 좀 봐 :

@" [103, 111, 97, 116, 115] === "goats"

그다지 유용하지는 않지만 그 반대는 다음과 같습니다.

@"'goats' === [103, 111, 97, 116, 115]
'goats'.bytes // compare the above too

이것은 알파벳생성하는 데 특히 유용합니다 .

65@"90    // Uppercase Alphabet
97@"122   // Lowercase Alphabet
65@"90+97@"122 // Both cases
String.letters // Compare 97@"122 to this

1

카레

빨간 카레가 아닙니다 (다른 카레는 ¬_¬에 대해 어떻게 생각하십니까?). 나는이 유형의 카레를 의미합니다.

a->b->

두 개의 인수를 취하는 함수가있는 경우 카레하는 것보다 짧습니다.

(a,b)->
a->b->

참고 : 정확히 두 개의 인수가 있는 경우에만 더 짧습니다 .


1

기본 인수 사용

체다 변수 선언은 꽤 많은 바이트 낭비 일 수 있습니다.

->{var a=b+1}

운 좋게도 변수 생성을 위해 함수 기본값을 사용할 수 있습니다.

b=a+1->b

사용 예는 다음과 같습니다.

let f= (a,b=a+1)->b
f(5) // 6

let f= a=Math.rand()->a
f() // 0.8757450950797647

1

기능화 된 연산자 및 본딩 사용

이것은 간단한 것입니다. 다음과 같은 것이 있다면 :

i->1+i

또는 유사한 작업. 기능화 된 연산자 + 본딩을 사용하여 단축 할 수 있습니다.

1&(+)

1

매핑 연산자 사용

=>이 또한 여러 번 범위와 함께 사용하고 사용할 수 있다는 것을 의미 때문에 그것의 우선 순위에, RHS에 좌 매핑 :

a=>f
(a).map(f)

또한 :

a=>f=>g           // This is equivilant to...
(a).map(f).map(g) // this
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.