Cheddar'da golf için ipuçları


12

çedar

Cheddar , kullanıcı Downgoat tarafından oluşturulan, programlamayı daha kolay, daha hızlı ve daha sezgisel hale getirmek için tasarlanmış üst düzey, fonksiyonel + nesne yönelimli bir programlama dilidir .

Cheddar'da golf yapmak için hangi genel ipuçlarınız var? Ben sorunları uygulanabilir ve aynı zamanda en azından biraz Cheddar (örneğin "gereksiz boşluk kaldırmak." Bir cevap değildir) belirli fikirler arıyorum .

Yanıtlar:


3

İşlevsel Özellikleri Kullan

Bir işlevde yalnızca bir özellik kullanırsanız:

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

Bazı baytları kaydetmek için işlevselleştirilmiş özellikleri kullanabilirsiniz:

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

İle functionized özelliğindeki değişkene başvurabilirsiniz $0.


2

Dize dizileri için Dize İşlecini kullanma

@"Farklı şeyler yapan, hepsi de dizelerle uğraşan operatörden bahsediyorum . Bunun biraz kullanımı var ama bu benim en sevdiğim kullanımlardan biri:

Şuna bir bak:

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

yararlı değil ama tam tersi:

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

Bu özellikle alfabeyi oluşturmak için kullanışlıdır :

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

1

köri

Hayır kırmızı köri (cur_¬ hakkında başka ne köri düşünürdünüz). Bu tür köri demek istiyorum:

a->b->

İki argüman alan bir fonksiyonunuz varsa. Köri yapmak, yapmamaktan daha kısadır:

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

Not: Bu yalnızca iki argümanınız olduğunda daha kısadır .


1

Varsayılan bağımsız değişkenleri kullan

Cheddar değişkenlerini beyan etmek oldukça byte-Waster olabilir:

->{var a=b+1}

Neyse ki, (ab) değişkenleri oluşturmak için işlev varsayılan değerlerini kullanabilirsiniz:

b=a+1->b

İşte bazı kullanım örnekleri:

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

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

1

İşlevsel Operatörleri ve Bağları Kullanma

Bu basit bir soru. Gibi bir şey varsa:

i->1+i

veya herhangi bir benzer işlem. İşlevsel işleçleri + birleştirmeyi kullanarak kısaltabilirsiniz:

1&(+)

1

Eşleme operatörünü kullanma

=>Bu da birden çok kez aralıkları ile kullanmak ve kullanmak anlamına gelir nedeniyle 's öncelik için, RHS için LHS eşler:

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

Bunlara ek olarak:

a=>f=>g           // This is equivilant to...
(a).map(f).map(g) // this
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.