1
ดูเหมือนว่าการเข้าร่วมของ Python จะไม่ได้มุ่งเน้นไปที่รายการที่จะเข้าร่วม แต่บนสัญลักษณ์เมื่อเทียบกับ Ruby หรือ Smalltalk ด้วยเหตุผลด้านการออกแบบ
ฉันคิดว่าหนึ่งในหลักสำคัญของ OOP คือเรามีวัตถุซึ่งเป็นรายการที่เราสนใจในการจัดการและจากนั้นเราส่งข้อความถึงพวกเขา ดังนั้นมันอาจดูเป็นธรรมชาติที่ฉันมีของสะสมและฉันจำเป็นต้องใส่มันเข้าไปในสายเดียวเพื่อที่จะทำมัน: ["x", "o", "o"].join(" | ") # joining a tic-tac-toe row in Ruby (Smalltalk ทำเช่นเดียวกัน) " | "เป็นในทางที่บางคนคิดว่าการเป็นอาร์กิวเมนต์หนึ่งสัญลักษณ์ของวิธีการที่จะเข้าร่วมได้ อาจเป็น" "เช่นเดียวกันหากบอร์ดเกมนั้นเรียบง่ายขึ้น ดังนั้นองค์ประกอบการเข้าร่วม" | "ไม่ใช่สิ่งที่เราสนใจโดยเฉพาะ - มันไม่ใช่วัตถุหลักในโปรแกรมที่มีความสำคัญหรือความสำคัญเป็นพิเศษ ถ้า Python ใช้งาน " | ".join(["x", "o", "o"]) มันรู้สึกค่อนข้างแปลกที่เกือบจะรู้สึกเหมือนว่าเรากำลังส่งข้อความไปยังการโต้แย้งเพื่อบอกข้อโต้แย้งเกี่ยวกับบางสิ่ง Python อาจจะเป็นขั้นตอนมากกว่านี้ใช่ไหม เพื่อบอกให้สายการเข้าร่วมทำหน้าที่ให้เราบ้างไหม? เป็นการบันทึกการนำไปปฏิบัติเพื่อที่เราจะได้ไม่ต้องกำหนดjoinคลาสสำหรับคอลเลกชั่นแต่ละคลาสที่เรามี? แต่มันไม่เป็นความจริงเลยที่เราสามารถเขียนคลาสคอลเลกชันใด ๆ ก็ได้เช่นใน Ruby: module Enumerable def my_join(joiner) self.inject …