การออกแบบไวยากรณ์ - ทำไมต้องใช้วงเล็บเมื่อไม่มีการส่งอาร์กิวเมนต์?
ในหลายภาษาไวยากรณ์function_name(arg1, arg2, ...)ถูกใช้เพื่อเรียกใช้ฟังก์ชัน เมื่อเราต้องการที่จะเรียกฟังก์ชั่นโดยไม่ขัดแย้งใด ๆ function_name()ที่เราต้องทำ ฉันคิดว่ามันแปลกที่คอมไพเลอร์หรือสคริปต์ล่ามจะต้อง()ประสบความสำเร็จในการตรวจสอบว่าเป็นการเรียกใช้ฟังก์ชัน หากตัวแปรรู้จักกันว่า callable ทำไมถึงไม่function_name;พอ? ในบางภาษาเราสามารถทำได้: function_name 'test';หรือแม้แต่function_name 'first' 'second';เรียกฟังก์ชั่นหรือคำสั่ง ฉันคิดว่าวงเล็บจะดีกว่านี้หากพวกเขาต้องการเพียงแค่ประกาศลำดับความสำคัญและในสถานที่อื่นเป็นทางเลือก ตัวอย่างเช่นการทำif expression == true function_name;ควรถูกต้องตามที่if (expression == true) function_name();ควร สิ่งที่น่ารำคาญที่สุดในความคิดของฉันคือทำ'SOME_STRING'.toLowerCase()เมื่อไม่มีข้อโต้แย้งที่ชัดเจนโดยฟังก์ชันต้นแบบ ทำไมนักออกแบบถึงเลือกคนที่เรียบง่าย'SOME_STRING'.lower? คำเตือน:อย่าเข้าใจฉันผิดฉันชอบไวยากรณ์ C-like! ;) ฉันแค่ถามว่ามันจะดีกว่า ต้อง()มีข้อได้เปรียบด้านประสิทธิภาพหรือไม่หรือทำให้เข้าใจรหัสได้ง่ายขึ้น? ฉันอยากรู้จริงๆว่าเหตุผลคืออะไร