จากสิ่งที่ฉันเห็นตลอดเวลาที่นี่ใน PPCG รายการ JavaScript ส่วนใหญ่ที่เกี่ยวข้องกับฟังก์ชั่นลูกศรไขมันมักจะเป็นหนึ่งในสองค่าย:
คนธรรมดาที่มีความสามารถในการทำงานเป็นคำสั่งเดียวและกลับคำตอบตรงออกค้างคาวเช่น
x=(a,b)=>a*a+b
คนที่มีความซับซ้อนมากขึ้นซึ่งมักจะมีเครื่องหมายปีกกาเนื่องจากการใช้ลูปและเป็นผลให้ต้องใช้
return
คำสั่ง ..p=b=>{m=b;for(a=1;~-m;)--m,a*=m*m;return a%b}
การยกตัวอย่างข้างต้นจากหมวดที่ 2 ด้วยแนวคิดการจัดฟันแบบหยิกเป็นข้อพิสูจน์ของแนวคิด ... จะมีวิธีในการตีรหัสนี้อีกครั้ง (หรือคล้ายกัน) แบบนี้เพื่อกำจัดการจัดฟันแบบหยิกreturn
หรือไม่? ฉันแค่ถามสิ่งนี้เนื่องจากอาจเป็นไปได้ (ไม่ได้บอกว่าจะเกิดขึ้นตลอดเวลา) กำจัด 8 ไบต์จากรหัสของนักกอล์ฟ JS มีเทคนิคใดบ้างที่สามารถใช้ในกรณีนี้ได้หรือไม่? ฉันพยายามเรียกซ้ำ แต่m=b
คำแถลงนั้นพิสูจน์แล้วว่าเป็นแมลงชนิดหนึ่งเพราะฉันดูเหมือนจะสั่นคลอนไม่ได้
สำหรับรหัสข้างต้นจะมีวิธีการหนึ่งที่กอล์ฟต่อไปเพื่อที่จะกำจัดreturn
คำสั่งโดยไม่คำนึงว่ามันจะเล่นกอล์ฟสั้นลงหรือไม่?
~-m
คือm-1
ดังนั้นลูปสามารถเป็นได้for(m=b,a=1;--m;a*=m*m)a%b;
และเวอร์ชันแบบเรียกซ้ำสามารถเป็นได้ (ยังไม่ทดลอง)b=>(f=a=>--m?f(a*=m*m):a%b)(1,m=b)