เครื่องหมายจุลภาคเป็นตัวคั่นและเครื่องหมายจุลภาคเป็นตัวคั่น


13

ในวิดีโอนี้ผู้พูดพูดว่า:

"บางคนสับสนว่าเครื่องหมายจุลภาคทำงานอย่างไรพวกเขาคิดว่าพวกเขาควรเป็นตัวคั่นมากกว่าตัวคั่นตอนนี้คุณสามารถคิดได้ทั้งสองวิธี"

ฉันไม่เข้าใจความแตกต่างระหว่างตัวคั่นและตัวคั่น (ถ้ามี) ความหมายในวิดีโอคือตอนนี้ (เครื่องหมายจุลภาคที่ถูกต้อง) หนึ่งสามารถคิดว่าพวกเขาเป็นตัวคั่นมากกว่าคั่น ...

Btw ภาษาที่ต้องสงสัยคือ JavaScript จากความเข้าใจของฉันโทเค็นเครื่องหมายจุลภาคมีความหมายสองประการ:

  • ในฐานะผู้ประกอบการ (ไม่ค่อยได้ใช้)
  • เป็นตัวคั่น (ในรายการอาร์กิวเมนต์และพารามิเตอร์อาร์เรย์และตัวอักษรวัตถุ ฯลฯ )

ฉันไม่แน่ใจว่าตัวคั่นจุลภาคเหมาะกับเรื่องนี้อย่างไร ...


2
เหตุใดเรื่องนี้
jfriend00

7
@ jfriend00 หากมีความแตกต่างระหว่างตัวคั่นข้อกำหนดและตัวคั่นฉันต้องการที่จะรู้ว่า ... ฉันชอบที่จะรู้สิ่ง:)
Šime Vidas

3
@ jfriend00 ดูวิดีโอ หากคน IE ไม่ได้คิดอย่างหวุดหวิดเหมือนกับคุณบางทีเราอาจจะยังไม่มี javascript portability snafu อีกต่อไป ...
yannis

3
@ ŠimeVidasเป็นคำถามที่ดี BTW ลำโพงเป็นดักลาส Crockford สถาปนิกอาวุโส JavaScript ที่ Yahoo ที่รู้จักกันเป็นที่นิยมชมชอบ JSON และผู้เขียนJavaScript: ส่วนดี มันเป็นความคิดที่ดีที่คุณใส่ใจในรายละเอียดโดยเฉพาะอย่างยิ่งเมื่อรับชมวิดีโอของ Crockford เนื่องจากเขาแทบจะไม่ต้องกังวลกับสิ่งที่ไม่สำคัญ
yannis

1
@ YannisRizos ใช่ฉันรู้ Crockford เขาเป็นนักการศึกษาที่ยอดเยี่ยม :)
Šime Vidas

คำตอบ:


15

หากคุณพิจารณาเครื่องหมายจุลภาคเป็นตัวคั่นคุณใช้เครื่องหมายจุลภาคระหว่างรายการสองรายการของลำดับเพื่อแยกพวกเขาหากคุณพิจารณาว่าเครื่องหมายจุลภาคเป็นตัวคั่นคุณวางไว้หลังแต่ละรายการเพื่อระบุตำแหน่งที่รายการจะสิ้นสุด ดูตัวอย่างด้านล่าง:

เครื่องหมายจุลภาคเป็นตัวคั่น

var myCars = ["Saab", "Volvo", "BMW" ];

เครื่องหมายจุลภาคเป็นตัวคั่น

var myCars = ["Saab", "Volvo", "BMW", ];

ฉันคิดว่าวิดีโอบอกว่าคุณสามารถนึกถึงเครื่องหมายจุลภาคทั้งเป็นตัวคั่นและตัวคั่นเพราะตัวอย่างอาร์เรย์ทั้งสองข้างต้นนั้นถูกต้อง ในทางกลับกันใน Javascript คุณสามารถใช้เครื่องหมายจุลภาคเป็นตัวคั่นในรายการพารามิเตอร์ของฟังก์ชันเช่น

foo(a, b, c) // separator, OK

ถูกต้องในขณะที่

foo(a, b, c,) // delimiter, NOT OK!

ไม่ถูกต้อง

แก้ไข

เท่าที่ฉันเข้าใจตามหน้าวิกิพีเดียตัวคั่นเป็นกรณีพิเศษของตัวคั่นกล่าวคือตัวคั่นที่คั่นระหว่างพื้นที่ข้อความที่แตกต่างกันซึ่งจำเป็นต้องทำเครื่องหมายขอบเขต ในความเป็นจริงชื่อหน้าวิกิพีเดียจุลภาคแยกค่าเป็นตัวอย่างของการใช้ตัวคั่น ดังนั้นโดยทั่วไปคุณสามารถใช้ตัวคั่นได้หลายวิธี: ก่อนหลังทั้งสองด้านของส่วนของข้อความที่จะทำเครื่องหมาย

เหตุผลที่ฉันตีความตัวคั่นเป็น "เครื่องหมายที่วางหลังจากรายการ" ในบริบท Javascript ได้รับแรงบันดาลใจจากตัวอย่างตัวอักษรอาร์เรย์ซึ่งใช้ได้สำหรับ C, C ++ และ Java (ฉันคิดว่าฉันเห็นคำถามอย่างน้อยหนึ่งคำถามใน ล้นล้นเกี่ยวกับหัวข้อนี้)

อีกตัวอย่างของการใช้อักขระที่คล้ายคลึงกัน แต่แตกต่างกันคือของเครื่องหมายอัฒภาคเป็นตัวคั่นคำสั่ง (C, C ++, Java, Ada, ... ) และเป็นตัวคั่นคำสั่ง (Pascal) ดังนั้น

if (a > 0)
    printf("Positive\n");
else
    printf("Non positive\n");

เป็นรหัส C ที่ถูกต้องในขณะที่

IF a > 0 THEN
    WriteLn('Positive'); (* Syntax error here! *)
ELSE
    WriteLn('Non positive');

ไม่มีรหัสปาสคาลที่ถูกต้อง

บางทีเทอร์มิจะเป็น / ระยะคลุมเครือน้อยดีกว่าคั่น ? ตัวอย่างเช่นเราสามารถกำหนดคำพูดได้ดังนี้: "บางคนสับสนเกี่ยวกับการทำงานของจุลภาคพวกเขาคิดว่าพวกเขาควรจะเป็นitem terminatorแทนที่จะเป็นitem separatorตอนนี้ (ในหลาย ๆ กรณี) คุณสามารถคิดได้ทั้งสองวิธี"


ใช่ในรายการพารามิเตอร์จะต้องใช้เครื่องหมายจุลภาคเป็นตัวคั่นในขณะที่ในอาร์เรย์ตัวอักษรจุลภาคสามารถใช้เป็นตัวคั่นหรือตัวคั่น หรือตามเงื่อนไขของคนธรรมดา: คุณสามารถใส่เครื่องหมายจุลภาคหลังองค์ประกอบอาร์เรย์สุดท้าย แต่คุณไม่จำเป็นต้องทำ
Šime Vidas

แม้ว่าคำตอบของคุณจะอธิบายคำพูดจากคำถามของฉันได้ค่อนข้างดีหน้า Wikipedia สำหรับ"ตัวคั่น"มีคำจำกัดความที่แตกต่างกัน ตามบทความนั้นตัวคั่นระบุขอบเขตระหว่างภูมิภาค ดังนั้นตัวอย่าง "เครื่องหมายจุลภาคเป็นตัวคั่น" จากคำถามของคุณด้านบนจะเรียกว่าตัวคั่นเขตข้อมูลจุลภาคในขณะที่ตัวอย่าง "เครื่องหมายจุลภาคเป็นตัวคั่น" ไม่ได้แสดงไว้ที่ใด ๆ บนหน้าวิกินั้น
Šime Vidas

@ Šime Vidas - Wikipedia เป็นเพียงการอ้างอิงเช่นเดียวกับการอ้างอิงอื่น ๆ ไม่ใช่การอ้างอิงเท่านั้น
Michael Riley - AKA Gunny

@CapeCodGunny ใช่ฉันแค่ชี้ให้เห็นว่ามีคำจำกัดความที่เผชิญหน้า ฉันต้องการดูคำจำกัดความจากข้อมูลอ้างอิงอื่นด้วย
Šime Vidas

7

ตัวคั่นจะถูกใส่ระหว่างค่าสองค่า

one,two,three

ตัวคั่นจะคั่นเขต - มันจะทั้งสองด้าน

,one,two,three,

เมื่อใช้วิธีนี้มันจะสร้างความแตกต่างเล็ก ๆ น้อย ๆ ตราบใดที่สามารถแยกเขตข้อมูลแยกออก

นี่เป็นปัญหาที่แตกต่างอย่างสิ้นเชิงกับการใช้เครื่องหมายจุลภาคในภาษาการเขียนโปรแกรมเช่นจาวาสคริปต์ มันเกี่ยวกับการกำหนด / แยกค่าภายในสตริง


1
อ่าใช่มันสมเหตุสมผลแล้ว
Šime Vidas

ฉันไม่เห็นด้วยกับคำอธิบายตัวคั่นของคุณ ตามคำอธิบายของคุณมันจะเป็นหนึ่งสองสองตอนตอนนี้ตัวคั่นทั้งสองด้าน
Michael Riley - AKA Gunny

1
@CapeCodGunny - คุณตีความผิดพลาด ตัวอย่างที่ฉันให้มีเครื่องหมายจุลภาคก่อนและหลังแต่ละค่า เครื่องหมายจุลภาคไม่อยู่ที่จุดเริ่มต้นและจุดสิ้นสุดของสตริงทำหน้าที่เป็นตัวคั่นจุดสิ้นสุดและเริ่มตัวคั่น
Oded

@Oded บทความ Wikipedia นี้มีคำจำกัดความที่แตกต่างกัน ตามตัวอย่างแรกของคุณจะเป็นตัวคั่นเขตข้อมูลในขณะที่ตัวอย่างที่สองของคุณไม่ได้แสดงในบทความนั้นเลย
Šime Vidas

1
คำเตือน! var myNumbers = ['one','two','three', ];(เครื่องหมายจุลภาคในตอนท้าย) จะให้ความยาวของอาร์เรย์เป็น 3 แต่เนื่องจากเครื่องหมายจุลภาคที่ด้านหน้าvar myNumbers = [,'one','two','three'];ให้ความยาวเป็น 4
RBT
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.