เคล็ดลับการตีกอล์ฟในเชดดาร์


12

เนยแข็งชนิดหนึ่ง

Cheddarเป็นภาษาการเขียนโปรแกรมเชิงวัตถุ + เชิงวัตถุระดับสูงที่สร้างขึ้นโดยผู้ใช้ของเราDowngoatออกแบบมาเพื่อให้การเขียนโปรแกรมง่ายขึ้นเร็วขึ้นและใช้งานง่ายขึ้น

คุณมีเคล็ดลับอะไรสำหรับการเล่นกอล์ฟใน Cheddar? ฉันกำลังมองหาความคิดที่สามารถนำไปใช้กับปัญหาและอย่างน้อยก็ค่อนข้างเฉพาะเจาะจงกับ Cheddar (เช่น "ลบช่องว่างที่ไม่จำเป็นออก" ไม่ใช่คำตอบ)

คำตอบ:


3

ใช้ฟังก์ชั่นคุณสมบัติ

หากคุณเคยใช้เพียงคุณสมบัติในฟังก์ชั่น:

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

คุณสามารถใช้คุณสมบัติที่ทำเป็นฟังก์ชันเพื่อบันทึกไบต์บางส่วน:

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

คุณสามารถอ้างอิงตัวแปรในทรัพย์สิน functionized $0ด้วย


2

ใช้ String Operator สำหรับลำดับสตริง

ฉันกำลังพูดถึง@"ผู้ประกอบการที่ทำสิ่งที่แตกต่างกันทั้งหมดที่จัดการกับสตริง นี่มีการใช้งานค่อนข้างน้อย แต่นี่เป็นหนึ่งในการใช้ที่ชื่นชอบ:

มาดูที่นี้:

@" [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

ใช้อาร์กิวเมนต์เริ่มต้น

การประกาศตัวแปร Cheddar สามารถค่อนข้าง byte-waster:

->{var a=b+1}

โชคดีที่คุณสามารถ (ab) ใช้ค่าเริ่มต้นของฟังก์ชั่นสำหรับการสร้างตัวแปร:

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

ใช้ตัวดำเนินการแมป

=>แผนที่ LHS เพื่อ 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.