แบ็กสแลชอะไรที่หลบหนีจริงๆ?
มันใช้เป็นตัวละครที่หลบหนี แต่ฉันมักจะสงสัยว่ามีอะไรหลบหนีหรือสิ่งที่ถูกหลบหนีจาก
ฉันรู้ว่า "\ n" กำหนดบรรทัดใหม่ แต่การหลบหนีมาจากไหน ทำไมถึงเรียกว่า
แบ็กสแลชอะไรที่หลบหนีจริงๆ?
มันใช้เป็นตัวละครที่หลบหนี แต่ฉันมักจะสงสัยว่ามีอะไรหลบหนีหรือสิ่งที่ถูกหลบหนีจาก
ฉันรู้ว่า "\ n" กำหนดบรรทัดใหม่ แต่การหลบหนีมาจากไหน ทำไมถึงเรียกว่า
คำตอบ:
แบ็กสแลชใช้เป็นตัวทำเครื่องหมายเพื่อบอกคอมไพเลอร์ / ล่ามว่าอักขระต่อไปมีความหมายพิเศษบางอย่าง อักขระตัวถัดไปหมายถึงอะไรขึ้นอยู่กับการนำไปใช้งาน ตัวอย่างเช่นภาษารูปแบบ C ใช้ \ n เพื่อหมายถึงการขึ้นบรรทัดใหม่และ \ t เพื่อหมายถึงแท็บ
การใช้คำว่า "หลบหนี" จริงๆแล้วหมายถึงการหลบหนีออกจากการแยกวิเคราะห์ข้อความชั่วคราวและเข้าสู่โหมดอื่นที่อักขระตัวต่อมาได้รับการปฏิบัติแตกต่างกัน
:))
มันเป็นคำที่เกี่ยวข้องกับลำดับการหลบหนีและคีย์Esc (ยกเว้น)
ตัวละครนั้นไม่ได้ "วิ่งหนี" ไปจากตัวละครอื่น ๆ บางคนอาจพูดว่าตัวละครที่ตามตัวละครหนี (พูดว่า\ nจากตัวอย่างของคุณ) หนีชะตากรรมของการถูกใช้เป็นสามัญnในบางแอปพลิเคชันและใช้แทนเป็นบรรทัดใหม่
Escape sequences นั้นเหมือนกันมากกับแนวคิดของการสื่อสารนอกวง :
บางครั้งก็ใช้เพื่ออธิบายสิ่งที่คนสื่อสารเรียกตัวละครกะเช่น ESC ที่นำไปสู่ลำดับการควบคุมสำหรับเทอร์มินัลจำนวนมากหรือตัวชี้วัดระดับการเปลี่ยนแปลงในรหัส Baudot 5 บิตแบบเก่า
สมมติว่าคุณกำลังถ่ายโอนไฟล์ผ่านพอร์ตอนุกรมและคุณต่อรองกับคอมพิวเตอร์ที่ปลายอีกด้าน: "ตกลงไฟล์มาที่นี่" เนื่องจากในกรณีทั่วไปอักขระทั้งหมดอาจเป็นอักขระไฟล์ที่ถูกต้อง (ถ้าเป็นไฟล์ ASCII) คุณมีปัญหา:
ผู้คนมากมายตลอดประวัติศาสตร์การคำนวณได้ใช้วิธีการต่าง ๆ มากมายเพื่อแก้ไขปัญหานี้
ในกรณีของสตริงตัวอักษรในภาษาการเขียนโปรแกรมมันเป็นปัญหาที่คล้ายกัน คำพูดแรกบอกว่า "มาที่นี่สตริง - เริ่มอ่านจนกว่าคุณจะได้รับใบเสนอราคาอื่น" แน่นอนว่าคุณมีปัญหาในการส่งอักขระคำพูดดังนั้นพวกเขาจึงคิดค้นลำดับการหลบหลีกของสแลช หากคุณเห็นสแลชแล้วอ้างว่านั่นคือคำพูดที่แท้จริงไม่ใช่จุดสิ้นสุดของสตริง น่าเสียดายที่คุณเพิ่งกลืนแมงมุมไปกินแมลงวันเพราะตอนนี้คุณไม่สามารถส่งชุดเครื่องหมายทับ - แท้จริง ดังนั้นคุณสามารถหลบหลีกด้วยสแลชอีก ดังนั้นเครื่องหมายสแลชหมายถึงเครื่องหมายสแลชหมายถึงเครื่องหมายคำพูด ที่อนุญาตให้ใช้เครื่องหมายทับสำหรับอักขระที่ไม่สามารถพิมพ์หรือพิมพ์ได้ยากเช่นการขึ้นบรรทัดใหม่การป้อนบรรทัดแท็บ ฯลฯ
มันหลบหนีจากบริบทแยกที่มีความต้องการ (สิ่งที่คนร้าย) n
ที่จะตีความได้ว่าแทนที่จะเป็นn
newline
ความแตกต่างที่น่าสนใจที่สุดเกี่ยวกับเรื่องนี้ก็คือการหลบหนีไม่ได้เปลี่ยนบริบทการแยกวิธีที่อักขระอ้าง"
(หรือสัญลักษณ์อื่น ๆ อีกมากมาย) จะทำต้องมีอีก"
(หรือสัญลักษณ์อื่น ๆ ) เพื่อกลับไปที่บริบทเดิม พวกเขาแค่หันเหความสนใจเล็กน้อย แต่กลับมาบนถนนโดยเร็ว
แต่ก็ไม่มีใครพูดถึงอีกต่อไปเกี่ยวกับการแยกวิเคราะห์บริบทเท่าที่ดูเหมือนจะไม่มีใครเขียน parsers อีกต่อไปนับตั้งแต่การถือกำเนิดของ xml และ json ปัญหาบางอย่างหยุดการเป็นกระแสหลักไปสู่โพรงและแนวความคิดแบบแปลก ๆเช่นที่ยังคงอ้อยอิ่งอยู่