เครื่องมือข้อความและชีวิตประจำวัน · ชุดเครื่องมือข้อความ
เหตุใดรายการที่เรียงลำดับแตกต่างกันระหว่างคอมพิวเตอร์: อธิบายการเรียงลำดับแบบรับรู้สถานที่
· เหตุใดจึงสำคัญ
เครื่องมือข้อความ การเรียงลำดับ สถานที่
อธิบายความแตกต่างระหว่างลำดับโค้ดพอยต์และการจัดเรียงโลแคล เหตุใด ä, é และตัวอักษรตัวพิมพ์ใหญ่จึงไปอยู่ที่ตำแหน่งต่างกันบนเครื่องที่ต่างกัน และวิธีการแชร์รายการที่เรียงลำดับโดยไม่เกิดความประหลาดใจ
รายการเดียวกัน สองคำสั่ง - การจัดเรียงของเพื่อนร่วมงานทำให้ Ångström อยู่ที่อื่น และคุณทั้งสองคนก็ไม่ผิด
หัวหน้าทีมสามารถส่งรายชื่อผู้เข้าร่วมที่เหมือนกันไปให้เพื่อนร่วมงานในสองประเทศ และรับลำดับตัวอักษรที่เป็นไปได้สองลำดับ ชื่อที่มีตัวอักษรเน้นเสียงเป็นจุดที่ไม่เห็นด้วยตามปกติ เนื่องจากตำแหน่งตามตัวอักษรไม่ได้ถูกกำหนดโดยตัวอักษรฐานที่มองเห็นได้เพียงอย่างเดียว สภาพแวดล้อมของเบราว์เซอร์มีส่วนร่วมในการเปรียบเทียบ
เพื่อนร่วมงานไม่จำเป็นต้องทำผิดพลาดด้วยตนเอง ปัญหาในทางปฏิบัติคือ การ "เรียงลำดับตามตัวอักษร" ไม่ได้ระบุลำดับสากลสำหรับข้อความหลายภาษา ก่อนที่จะตรวจสอบการเพิ่มเติมหรือการลบออก ต้องยอมรับว่าคำสั่งซื้อที่เสร็จสมบูรณ์แล้วใดที่เชื่อถือได้ มิฉะนั้นการเปรียบเทียบแบบทีละบรรทัดจะแสดงการเคลื่อนไหวที่เกิดจากการตัดสินใจแยกประเภทเท่านั้น
ลำดับโค้ด — เหตุใดการเรียงลำดับแบบไร้เดียงสาจึงใส่ตัวพิมพ์ใหญ่ทั้งหมดก่อนอักษรตัวพิมพ์เล็กทุกตัวและดันตัวอักษรที่เน้นเสียงไปที่ท้าย
โครงร่างนี้อธิบายถึงการจัดเรียงจุดโค้ดที่ไร้เดียงสาซึ่งวางตัวพิมพ์ใหญ่ก่อนตัวอักษรพิมพ์เล็กและตัวอักษรเน้นเสียงที่ส่วนท้าย แต่นั่นไม่ใช่สิ่งที่ชุดเครื่องมือข้อความนำไปใช้ ฟังก์ชัน `sortLines` จะคัดลอกบรรทัดและเปรียบเทียบแต่ละคู่กับ `localeCompare` ดังนั้นจึงคำนึงถึงกฎการจัดเรียงเบราว์เซอร์มากกว่าการใช้ตัวเลขอักขระดิบ
การจัดการเคสก็มีความชัดเจนในตัวเลือกฟังก์ชันเช่นกัน การเรียงลำดับตามตัวพิมพ์เล็กและใหญ่ขอความไว `variant` ในขณะที่โหมดไม่คำนึงถึงตัวพิมพ์เล็กและใหญ่เริ่มต้นขอความไว `base` ซึ่งสามารถทำให้รูปแบบที่มีตัวพิมพ์เล็กหรือเน้นเสียงที่แตกต่างกันเปรียบเทียบได้ว่าเทียบเท่า โดยปล่อยให้ตำแหน่งที่สัมพันธ์กันขึ้นอยู่กับลำดับที่มั่นคงที่จ่ายให้กับเครื่องคัดแยก แทนที่จะบังคับตัวพิมพ์ใหญ่ให้แยกบล็อก
ToolAcre ไม่ได้ใช้ลำดับจุดโค้ดที่ไร้เดียงสา: เรียก localeCompare สำหรับทุกบรรทัด
การเปรียบเทียบส่ง `undefined` เป็นภาษา ซึ่งขอให้รันไทม์ใช้ลักษณะการทำงานของภาษาเริ่มต้น แหล่งที่มาไม่ได้รับประกันว่าจะมีการเปรียบเทียบภาษาสวีเดน เยอรมัน อังกฤษ หรือชื่ออื่นใด และอินเทอร์เฟซที่แสดงโดยฟังก์ชันนี้ไม่มีอาร์กิวเมนต์เกี่ยวกับสถานที่ ดังนั้นการเผยแพร่คำสั่งระดับชาติที่ชัดเจนที่นี่จึงนอกเหนือไปจากหลักฐานการดำเนินการ
ขอบเขตนี้อธิบายว่าทำไมผลลัพธ์จึงอาจแตกต่างกันโดยไม่ต้องพิสูจน์แน่ชัดว่าการตั้งค่าใดทำให้เกิดความแตกต่างโดยเฉพาะ บันทึกเบราว์เซอร์และสภาพแวดล้อมเมื่อความสามารถในการทำซ้ำมีความสำคัญ แต่อย่าอนุมานสถานที่จากตำแหน่งของชื่อที่เน้นเสียงเพียงตำแหน่งเดียว ข้อเท็จจริงที่เชื่อถือได้ก็คือชุดเครื่องมือมอบหมายการจัดลำดับไปที่ `localeCompare` โดยมีค่าเริ่มต้นรันไทม์ แทนที่จะปักหมุดภาษาที่ใช้ร่วมกัน
เบราว์เซอร์ระบุภาษาเริ่มต้น แต่ชุดเครื่องมือไม่มีตัวเลือกภาษา
การวิ่งหลักได้รับการดูแลเป็นพิเศษเช่นกัน ฟังก์ชันนี้จะมีค่าเริ่มต้น `numeric` เป็นจริงและส่งต่อตัวเลือกนั้นไปที่ `localeCompare` ดังนั้น รายการที่มี `item2` และ `item10` มีวัตถุประสงค์เพื่อวางการเรียกใช้ตัวเลขที่น้อยกว่าก่อนตามลำดับจากน้อยไปมาก แทนที่จะเปรียบเทียบอักขระ `1` ในสิบกับอักขระ `2` ในสอง
การเติมศูนย์ยังคงมีประโยชน์เมื่อข้อมูลต้องผ่านตัวเรียงลำดับอื่นที่ไม่ทราบพฤติกรรม แต่ไม่จำเป็นต้องได้รับการเรียงลำดับแบบรับรู้ตัวเลขที่นี่ หากต้องการลำดับคำศัพท์ที่แน่นอนแทน ฟังก์ชันพื้นฐานรองรับการปิดการเปรียบเทียบตัวเลข บทเรียนที่สำคัญคือการจัดทำเอกสารตัวเลือกที่เลือก แทนที่จะถือว่าทุกคำสั่งตามตัวอักษรถือว่าตัวเลขที่ฝังไว้เหมือนกัน
Digit จะเรียงลำดับตัวเลขตามค่าเริ่มต้น ดังนั้น item2 จึงมาก่อน item10
สำหรับตัวอย่างที่ตรวจสอบได้ ให้วาง `Ångström`, `Ana`, `Émile`, `item2` และ `item10` แยกบรรทัด จากนั้นจัดเรียงหนึ่งครั้งในเบราว์เซอร์ที่ทีมเลือก บันทึกผลลัพธ์นั้นเป็นข้อมูลอ้างอิง บทความนี้จงใจไม่เผยแพร่ลำดับชื่อเน้นเสียงที่คาดหวังของเบราว์เซอร์ตัวที่สอง เนื่องจากพื้นที่เก็บข้อมูลไม่มีการติดตั้งตำแหน่งที่ปักหมุดไว้
หากเพื่อนร่วมงานมีคำสั่งซื้ออื่น ให้เปรียบเทียบข้อความที่เสร็จสมบูรณ์ทั้งสองรายการกับค่าความแตกต่างแบบเส้น การใช้งาน diff จะจัดแนวบรรทัดที่เท่ากันทุกประการผ่านตารางลำดับย่อยที่ยาวที่สุดและระบุแถวที่ไม่ตรงกันว่าเพิ่มหรือลบออก รายงานความเคลื่อนไหวของโครงสร้างอย่างซื่อสัตย์ แต่ไม่ได้อธิบายว่าการเปรียบเทียบสถานที่ใดที่วางชื่อไว้ที่ตำแหน่งใดตำแหน่งหนึ่ง
ตัวอย่างการทำงาน: เปรียบเทียบลำดับที่เบราว์เซอร์สร้างขึ้นแทนที่จะสร้างผลลัพธ์สองสถานที่
กฎการทำงานร่วมกันที่ง่ายที่สุดคือการเรียงลำดับครั้งเดียวและแบ่งปันบรรทัดผลลัพธ์ ไม่ใช่แค่อินพุตที่ไม่ได้เรียงลำดับเท่านั้น พร้อมคำสั่งให้กดเรียงลำดับ ผลลัพธ์ที่เป็นข้อความล้วนจะคงการตัดสินใจที่ได้รับการตรวจทานจริงไว้ ผู้รับสามารถค้นหา ใส่คำอธิบายประกอบ หรือสร้างความแตกต่างให้กับส่วนนั้นได้โดยไม่ต้องขอให้เบราว์เซอร์ของตนเองสร้างการเรียงลำดับที่ขึ้นกับสภาพแวดล้อมขึ้นใหม่
เก็บรายการดั้งเดิมไว้เช่นกันเมื่อแหล่งที่มามีความสำคัญ สำเนาที่จัดเรียงแล้วเป็นการนำเสนอสำหรับการตรวจทาน ในขณะที่ต้นฉบับอาจมีการมาถึงหรือลำดับแหล่งที่มาที่มีความหมาย การตั้งชื่อไฟล์อ้างอิงและการบันทึกว่าการเรียงลำดับเป็นแบบน้อยไปหามาก คำนึงถึงตัวพิมพ์เล็กและใหญ่ และตัวเลขจะเปลี่ยนการดำเนินการตามตัวอักษรที่คลุมเครือให้กลายเป็นแฮนด์ออฟของทีมที่ทำซ้ำได้
สิ่งที่ไม่ครอบคลุมถึง ได้แก่ ตัวเลือกการเรียงลำดับตัวเลข ลำดับย้อนกลับ และการเรียงลำดับตามคอลัมน์เฉพาะ
โครงร่างดั้งเดิมระบุว่าไม่ครอบคลุมตัวเลือกการเรียงลำดับตัวเลขและลำดับย้อนกลับ แต่แหล่งที่มาขัดแย้งกับข้อจำกัดดังกล่าว `sortLines` ยอมรับตัวเลือกตัวเลขและทิศทางขึ้นหรือลง ในขณะที่ `reverseLines` สามารถกลับลำดับบรรทัดปัจจุบันได้ ความสามารถเหล่านั้นไม่ควรถูกอธิบายว่าไม่มีอยู่ในตรรกะข้อความของชุดเครื่องมือ
การเรียงลำดับตามคอลัมน์เฉพาะนั้นอยู่นอกฟังก์ชันนี้อย่างแท้จริง ทุกบรรทัดที่สมบูรณ์คือค่าการเปรียบเทียบ ดังนั้นแถวเช่น `Paris, Ana` จะถูกจัดเรียงจากจุดเริ่มต้น แทนที่จะเรียงลำดับตามชื่อหลังเครื่องหมายจุลภาค แยกวิเคราะห์แถวที่มีโครงสร้างด้วยเครื่องมือข้อมูลที่เหมาะสมเมื่อฟิลด์มีความสำคัญ การเรียงลำดับบรรทัดไม่ควรแกล้งทำเป็นเข้าใจคอลัมน์
ชุดเครื่องมือครอบคลุมการเรียงลำดับตัวเลขและลำดับย้อนกลับ แต่ไม่มีการเรียงลำดับตามคอลัมน์
การเรียงลำดับแบบ Locale-aware มีประโยชน์เนื่องจากตัวอักษรของมนุษย์ไม่สามารถลดลงเหลือกฎตัวเลขอักขระดิบกฎเดียวได้อย่างปลอดภัย นอกจากนี้ยังหมายความว่าภาษาเริ่มต้นที่ไม่ได้ปักหมุดไม่ใช่สัญญาการทำซ้ำข้ามเครื่อง ชุดเครื่องมือข้อความใช้การจัดเรียงเบราว์เซอร์ โดยกำหนดค่าเริ่มต้นเป็นการเปรียบเทียบที่ไม่คำนึงถึงตัวพิมพ์เล็กและตัวเลข และสามารถกลับทิศทางที่ร้องขอได้
สำหรับทีมที่ครอบคลุมสภาพแวดล้อม ให้สร้างผลลัพธ์ตามสัญญา: เลือกเซสชันเบราว์เซอร์หนึ่งเซสชัน ตั้งค่าตัวเลือกที่ต้องการ จัดเรียงและกระจายข้อความนั้นทุกประการ เมื่อมีลำดับอื่นปรากฏขึ้น ให้เปรียบเทียบสิ่งประดิษฐ์ก่อนที่จะถกเถียงกันว่าตัวอักษรตัวใดถูกต้อง แหล่งที่มาสนับสนุนการอธิบายกลไก ในขณะที่ผลลัพธ์ที่บันทึกไว้ให้ลำดับที่เสถียร ซึ่งการใช้งานนั้นไม่ได้รับประกันทั่วโลก