คุณมีเคล็ดลับอะไรสำหรับการเล่นกอล์ฟในHaxe ? ฉันกำลังมองหาความคิดเห็นที่สามารถนำไปใช้กับปัญหารหัสกอล์ฟและอย่างน้อยก็ค่อนข้างเฉพาะเจาะจงกับ Haxe (เช่น "ลบความคิดเห็น" ไม่ใช่คำตอบ)
กรุณาโพสต์หนึ่งเคล็ดลับต่อคำตอบ
Haxe สามารถเรียกใช้ออนไลน์ได้ที่นี่ !
คุณมีเคล็ดลับอะไรสำหรับการเล่นกอล์ฟในHaxe ? ฉันกำลังมองหาความคิดเห็นที่สามารถนำไปใช้กับปัญหารหัสกอล์ฟและอย่างน้อยก็ค่อนข้างเฉพาะเจาะจงกับ Haxe (เช่น "ลบความคิดเห็น" ไม่ใช่คำตอบ)
กรุณาโพสต์หนึ่งเคล็ดลับต่อคำตอบ
Haxe สามารถเรียกใช้ออนไลน์ได้ที่นี่ !
คำตอบ:
Haxe รองรับการแก้ไขสตริงในสตริงที่มีเครื่องหมายคำพูดเดี่ยว เช่นเดียวกับสตริงแม่แบบใน JavaScript ES6 คุณสามารถรวมนิพจน์ในสตริงด้วย${...}
:
trace('2 + 2 = ${2 + 2}');
อย่างไรก็ตามต่างจาก ES6 คุณสามารถละเว้นวงเล็บปีกกาเมื่อนิพจน์เป็นตัวแปรเดียว:
var x = 2 + 2;
trace('2 + 2 = $x');
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
ต้องเป็นทั้ง Intsx
y
ไม่สามารถมีขนาดใหญ่กว่าเห็นได้ชัดว่าคุณสามารถทำงานอะไรก็ได้ตามเงื่อนไขด้วยif
:
if(n>5)doSomething(n);
อย่างไรก็ตามหากคุณมีคำสั่งเดียวดังกล่าวข้างต้นคุณสามารถใช้ตัวดำเนินการเงื่อนไขที่ประกอบไปด้วยเพื่อบันทึกไบต์:
n>5?doSomething(n):0;
บางครั้งคุณสามารถบันทึกไบต์อื่นได้ด้วยการใช้&&
แม้ว่ามันจะหายากมากเพราะ&&
จะใช้ได้เฉพาะในกรณีที่นิพจน์ทั้งสองส่งคืนบูลีน:
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
inline 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);
ง่ายสองไบต์บันทึกไว้ในฟังก์ชั่นมากมาย
แม้ว่าฟังก์ชั่นจะต้องมีหลายคำสั่งคุณสามารถบันทึกไบต์ได้โดยการย้าย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;}
สิ่งนี้ทำงานได้เพราะบล็อกประเมินการแสดงออกครั้งสุดท้ายภายในบล็อก
n*n*n
หรือดีกว่าn*n*n*n
สำหรับ tesseract ของตัวเลข ฯลฯ ... อย่างไรก็ตามMath.pow
เป็นตัวอย่างที่ดีที่นี่
Math.pow(3,n)
;-)