sigils ทำให้ซอร์สโค้ดอ่านง่ายขึ้นหรือไม่


13

ในภาษาการเขียนโปรแกรมส่วนใหญ่ตัวแปรไม่มีการระบุอักขระเหมือนที่ทำใน PHP ใน PHP คุณต้องนำหน้าตัวแปรด้วย$อักขระ

ตัวอย่าง;

 var $foo = "something";
 echo $foo;

ฉันกำลังพัฒนาภาษาสคริปต์ใหม่สำหรับแอปพลิเคชันธุรกิจและผู้ใช้เป้าหมายของฉันไม่มีพื้นหลังการเขียนโปรแกรม อักขระเหล่านี้ทำให้รหัสอ่านและใช้ง่ายขึ้นหรือไม่

เหตุผลหนึ่งที่ PHP ใช้$คือเพราะไม่มี PHP ไม่สามารถบอกได้ว่าชื่อคือการอ้างอิงฟังก์ชันหรือการอ้างอิงตัวแปร นี่เป็นเพราะภาษาอนุญาตการอ้างอิงที่แปลกไปยังฟังก์ชัน ดังนั้น$สัญลักษณ์จะช่วยให้ parser แยก namespace

ฉันไม่มีปัญหานี้ในโปรแกรมแยกวิเคราะห์ ดังนั้นคำถามของฉันคือการอ่านง่ายและใช้งานง่าย ฉันเขียนโค้ดเป็นเวลาหลายปีใน PHP ว่าเมื่อฉันเห็น$fooมันเป็นเรื่องง่ายสำหรับฉันที่จะระบุว่านี่เป็นตัวแปร ฉันแค่ให้การตั้งค่าอคติกับตัวระบุนี้หรือไม่


19
IMO รหัสสามารถอ่านได้มากขึ้นโดยไม่ต้องใช้ซิงก์
John Dvorak

6
@JanDvorak +1 ที่ให้คำศัพท์ใหม่ ๆ แก่ฉันในวันนี้ ฉันจะพยายามใช้sigilsสามครั้งวันนี้ในการสนทนา
ซ้ำ

6
IMO มันขึ้นอยู่กับว่าบรรณาธิการของคุณมีการเน้นไวยากรณ์
CodeBeard

5
ถ้าคุณใช้var $x = ...หรือtype $x = ...ฉันคิดว่า $ เป็นจำนวนมากเกินไป หากคุณเพิ่งมี$x = ...แล้วมันอาจจะคุ้มค่าที่จะทำ โดยเฉพาะอย่างยิ่งถ้าคุณไม่ต้องการสนับสนุนการเน้นไวยากรณ์ในโปรแกรมแก้ไขทั่วไป อย่างไรก็ตามฉันไม่ชอบsigils
CodeBeard

5
sigils เป็นเหมือนสัญลักษณ์ของฮังการี
ratchet freak

คำตอบ:


13

ความเป็นไปได้ทางเทคนิคและข้อ จำกัด ที่แท้จริงนั้นไม่ได้มีการจัดเรียงตามที่แนะนำไว้ตลอดทั้งชุด เรามาทำความเข้าใจก่อน

นี่คือสิ่งที่ $ สามารถทำได้ใน PHP:

  • ตัวแปรตัวแปร
  • ตัวแปรที่มีชื่อคำหลักเช่น$returnหรือสามารถใช้ชื่อเดียวกันสำหรับตัวแปรและฟังก์ชั่น / ค่าคงที่เช่น$__FILE__

ข้อ จำกัด หรือคุณสมบัติที่ไม่เกี่ยวข้องกับคำนำหน้า $:

  • การนำไปใช้งานไม่สามารถบอกความแตกต่างระหว่างฟังก์ชันและตัวแปร
  • การแก้ไขสตริง PHP หรือไวยากรณ์เทมเพลต
  • การประกาศตัวแปรที่จำเป็น

นั่นหมายความว่าไม่มีเหตุผลทางเทคนิคที่คุณไม่สามารถทำได้

foo = "something";
echo foo;

หรือ

foo = "something";
echo "foo = $foo";
//would print
//foo = something 

อย่างไรก็ตามคุณไม่สามารถทำได้ (สมมติว่าreturnเป็นคำหลัก)

return = "something";

ไม่มีภาวะแทรกซ้อนรุนแรง หากคุณใช้คำนำหน้าเช่น$นั้นก็จะไม่มีปัญหาใด ๆ

มันเป็นความคิดเห็น แต่ฉันเชื่อว่า sigil น่าจะคุ้มค่าสำหรับโปรแกรมเมอร์ที่ไม่ได้ใช้เพราะมันทำให้พวกเขาสามารถใช้คำสำคัญเป็นชื่อตัวแปรได้


เกี่ยวกับreturn = "something";C # มี "คำหลักตามบริบท" ซึ่งเป็นตัวเลือกที่คุ้มค่าในการตรวจสอบเมื่อออกแบบภาษา
luiscubal

1
เขียน @luiscubal ว่าใน C # @return = "something;"น่าแปลกใจที่ไม่ต้องมีเครื่องหมายดังนั้นหากคุณต้องการรหัสที่จะรวบรวมคุณจะต้องเขียน มีคำหลักเชิงบริบทจำนวนหนึ่งใช่ แต่การทำให้คำหลักตามบริบททั้งหมดนั้นหมายถึงการใช้งานที่ซับซ้อนมากขึ้น
Esailija

7

เครื่องหมาย Sigils ทำให้เข้าใจได้ง่ายขึ้นในภาษาเพอร์เพิลซึ่งจะให้การตรวจสอบประเภทจำนวนหนึ่ง ใน php พวกเขาไม่ได้ช่วยอะไรมากไปกว่าการสร้างเทมเพลต คุณสามารถเข้าใจถึงประโยชน์และความสามารถในการอ่านของพวกเขาโดยดูจากภาษาต่างๆ แทบจะไม่ใช้พวกเขา

ในภาษาเป้าหมายของผู้ใช้ปลายทางที่ฉันกำลังดำเนินการอยู่ฉันจะดำเนินการต่อไปโดยกำหนดตัวพิมพ์เล็กและตัวพิมพ์เล็กและเว้นวรรคและเครื่องหมายวรรคตอน ที่ให้ฉันสร้างชื่อตัวแปรเช่นKarl's heightนั้นใกล้เคียงกับภาษาธรรมชาติมากขึ้น


1
+1 สำหรับช่องว่างในตัวแปร แต่ฉันไม่รู้ว่าจะใช้งานอย่างไร ไม่แน่ใจว่าฉันอ่านง่ายกว่านี้ไหม ฉันไม่ได้ใช้มัน
ซ้ำ

1
ฉันชอบความคิด แต่ฉันเกลียดที่จะเขียนโปรแกรมแยกวิเคราะห์สำหรับภาษาที่มีช่องว่างในตัวระบุ :-)At Karl's for the night = true;
Martin York

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

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

1
การอนุญาตช่องว่างในตัวแปรไม่ใช่เรื่องใหญ่ในหลักการ - มันหมายถึงกฎไวยากรณ์สำหรับตัวระบุที่อนุญาตให้มีหลายคำ อย่างไรก็ตามมันหมายความว่าสิ่งอื่น ๆ อาจไม่เป็นไปได้ในไวยากรณ์โดยไม่สร้างความกำกวม ยกตัวอย่างเช่นใน Haskell, map sumเป็นสายฟังก์ชั่นบางส่วนประยุกต์ - ฟังก์ชั่นจะถูกส่งเป็นพารามิเตอร์ไปsum mapแต่ทั้งคู่เป็นเพียงชื่อไลบรารีดังนั้นด้วยตัวระบุหลายคำคอมไพเลอร์ไม่สามารถรู้ได้ว่าmap sumเป็นตัวระบุหลายคำหรือแอปพลิเคชันฟังก์ชั่นที่ใช้ตัวระบุคำเดียวสองคำ
Steve314

7

หลายปีก่อนฉันเรียน Applesoft Basic Strings ถูก suffixed เสมอกับและอาร์เรย์มีคำต่อท้ายของ$ %นั่นเป็นวิธีการทำงานของภาษา คุณมองไปที่บางสิ่งคุณรู้ว่ามันคืออะไร ฉันไม่เคยเจาะลึกเข้าไปในล่ามเกินกว่าจะเข้าใจได้ว่าเหตุใดในกรณีนี้หรือการตัดสินใจออกแบบที่ทำให้เป็นเช่นนั้น


sigil ใน php มาจากอิทธิพลของ perl (ซึ่งได้รับอิทธิพลจากawkและsh) sigil ใน perl ค่อนข้างมากกว่าเพียงแค่$มันสามารถระบุประเภทที่แตกต่างกัน:

  • $ เกลา
  • @ รายการ
  • % กัญชา
  • & codeblock
  • * typeglob

sigil จะระบุส่วนของโครงสร้างตารางสัญลักษณ์ที่คุณกำลังดูอยู่ ด้านหลังของฉากรายการตารางสัญลักษณ์สำหรับ foo (เข้าถึงได้ผ่าน*foo- typeglob) มีทุกอย่างที่อาจเป็น foo นอกจากนี้$foo, @foo, %fooที่รูปแบบ foo , &fooการ foo filehandle ฯลฯ ...

นอกจากนี้ยังอนุญาตให้สร้างนามแฝงของตัวแปรหนึ่งไปยังอีกตัวแปรหนึ่ง:

#!/usr/bin/perl

$foo = "foo";
@qux = (1,2);
*bar = \$foo;
*bar = \@qux;

print "$bar @bar\n";

พิมพ์นี้foo 1 2- ใน Perl นี้เป็นสิ่งที่ sigils เป็นจริงๆสำหรับไม่ว่าคุณควรจะทำเช่นนี้ แต่ว่ามีเบื้องหลังสิ่งที่พวกเขาทำ

sigils มีไม่มากสำหรับการอ่าน แต่เพื่อให้สามารถมี$fooและ@fooไม่มีการชนกันใน namespace (เปรียบเทียบภาษาอื่นที่ไม่มีทั้งสองอย่างint foo; int[] foo;)


Sigils สำหรับการอ่านเป็นสิ่งที่เรียนรู้เป็นส่วนหนึ่งของภาษาใด ๆ - การอ่านไวยากรณ์ คุณสามารถบังคับประเภทของตัวเอง (ในฐานะสัญกรณ์ฮังการี) เพื่อเป็นส่วนหนึ่งของตัวระบุ

มีบางอย่างใน lex ตามเส้นของ:

typeChar  [is]
capLetter [A-Z]
letter    [a-z]
digit     [0-9]
%%
{typeChar}{capLetter}(letter}|{digit})* { prientif("iddentifier");}
%%

จากนั้นคุณสามารถมีรหัสเช่น

iFoo = 42;
sFoo = "a string";
iBar = iFoo * 2;

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

อย่างไรก็ตามหลังจากทำงานกับภาษาที่กำหนดด้วยวิธีนี้ฉันอาจจะสามารถอ่านได้โดยไม่มีปัญหา

บางคนชอบพวกเขาบางคนทำไม่ได้ มีสงครามศักดิ์สิทธิ์อันยิ่งใหญ่ในฟอรัมต่าง ๆ ที่ถกเถียงกันเรื่องนี้และมันจะยิ่งทำให้คุณใช้มันมากแค่ไหน

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

มันไม่สำคัญหรอก สิ่งที่สำคัญคือว่า sigils จะเข้ากับภาษาได้อย่างไรถ้าคุณใช้พวกเขาหรือไม่ คุณต้องการที่จะทำ"123 $foo 456"หรือคุณต้องทำ"123 " + foo + " 456"? นี่คือที่ที่ควรทำการตัดสินใจ


1
การแก้ไขสตริงเช่น"123 $foo 456"ไม่ได้เปิดใช้งานโดยคำนำหน้า sigil และเป็นมุมฉากทั้งหมด
Esailija

1
มันเป็นส่วนหนึ่งของการแก้ไขของตัวแปรและขึ้นอยู่กับวิธีการแยกวิเคราะห์สตริง Sigils สามารถทำให้ง่ายขึ้น (สามารถทำได้ในลักษณะอื่น ๆ ตามที่แสดงโดยวิธีที่ดีที่สุดในการแก้ไขตัวแปรใน javascript หรือไม่แต่นั่นไม่ใช่ส่วนหนึ่งของภาษาหลัก Sigils, arguably ทำให้ง่ายต่อการเขียนและทำความเข้าใจเรื่องนี้มากขึ้น

1
@MichaelT ไม่ความจริงที่ว่าตัวแปรมีส่วนนำหน้าไม่ได้ทำให้การใช้การแก้ไขสตริงง่ายขึ้นหรือยากขึ้น พวกเขาเป็นเพียง 2 สิ่งที่ไม่เกี่ยวข้องอย่างสมบูรณ์ สำหรับมนุษย์ผู้อ่านมันอาจเป็นทางเลือกที่ดีที่จะใช้$asdในการแก้ไขสตริงหาก$มีการใช้คำนำหน้าตัวแปรแล้ว แต่ก็ไม่มีอะไรเกี่ยวข้องกับความเป็นไปได้ที่แท้จริงของการใช้การแก้ไขสตริงในตอนแรก
Esailija

2
@Esailija คุณสามารถอธิบายว่าพวกเขาไม่เกี่ยวข้องกันอย่างไร? นอกเหนือจากen.wikipedia.org/wiki/Variable_interpolation - "ภาษาที่รองรับการแก้ไขตัวแปรรวมถึง Perl, PHP, Ruby, Tcl, Groovy และ Unix shell ส่วนใหญ่ในภาษาเหล่านี้การแก้ไขตัวแปรจะเกิดขึ้นเมื่อสตริงตัวอักษรเป็นเท่านั้น double-quote แต่ไม่ใช่เมื่อเป็น single-quote ตัวแปรจะถูกจดจำเนื่องจากตัวแปรเริ่มต้นด้วย sigil (โดยทั่วไปคือ "$") ในภาษาเหล่านี้ "

@MichaelT สัญลักษณ์ดอลลาร์ที่ถูกใช้ในส่วนนำหน้าตัวแปรและการแก้ไขสตริงเป็นตัวเลือกผิวเผินอย่างสมบูรณ์ (ซึ่งมีเพียงอาร์กิวเมนต์ที่สามารถอ่านได้เท่านั้นไม่มีอะไรเกี่ยวข้องกับการนำไปใช้มันอาจ#ใช้กับ coffeescript เช่นกันและ coffeescript ไม่นำหน้า ตัวแปรที่มี#- อันที่จริงแล้วมันไม่ได้นำหน้าตัวแปรเลย)
Esailija

3

ฉันไม่เห็นด้วยที่ PHP ใช้ $ เพื่อแตกต่างจาก funcs อย่างน้อยก็เพราะ PHP มีรูปแบบ C-like และ funcs () มี parens ตามชื่อ

อ่านโพสต์นี้ใน stack overflowว่าทำไม $ ถึงเป็น PHP

ภาษายอดนิยมมากมายเช่น C, C ++, C #, Java ไม่ได้ใช้ $ และเราสามารถแตกต่างจากฟังก์ชั่น var ได้ง่าย

ใน PHP $ ช่วยเช่นเมื่อคุณเขียน: echo "var = $ var"

หากไม่มีการหลอกลวง $ ดังกล่าวจะเป็นไปไม่ได้


+1 อาที่มีเหตุผลมากกว่านี้ ขอบคุณ
ซ้ำ

3
ภาษาที่มี sigils ไม่มีส่วนเกี่ยวข้องกับการมีการแก้ไขสตริงในตัวอย่างของคุณecho "var = $var"

4
-1 PHP ไวยากรณ์ผิดปกติไม่ได้เกิดจากข้อ จำกัด ที่เกิดขึ้นจริง แต่เนื่องจากกฎไวยากรณ์ได้รับการออกแบบมาไม่ดีอย่างมากหากออกแบบมาทั้งหมด นี่คือเหตุผลที่พวกเขาต้องการแฮ็คเพื่อเปิดใช้งานfn()[]เช่นเดียวกับไวยากรณ์ที่สมเหตุสมผลที่จะทำงานนอกกรอบโดยไม่ต้องคิดแม้แต่เรื่อง
Esailija

@svidgen ใช่ คุณไม่สามารถทำการแก้ไขสตริงอย่างปลอดภัยได้โดยไม่ต้องใช้วิธีการระบุว่าส่วนใดของสตริงที่ควรแมปกับตัวแปร ภาษาอื่น ๆ จบลงด้วยสิ่งที่ฉันคิดว่าน่ารำคาญ / ใช้คำฟุ่มเฟือยที่ไม่จำเป็นเช่นการจัดรูปแบบสตริงของ Python อย่างไรก็ตามมีข้อได้เปรียบอื่น ๆ เช่นกันใน PHP: RuslanZasukhin ไม่ถูกต้องในการบอกว่าฟังก์ชั่นจะถูกระบุด้วย parens เสมอเพราะพวกเขาสามารถส่งผ่านไปรอบ ๆ เป็นการอ้างอิง
Izkata

@Izkata วิธีที่คุณใช้ตัวแปรในภาษานั้นไม่เกี่ยวข้องกับไวยากรณ์การแก้ไขสตริง แต่นั่นก็ส่อให้เห็นในคำตอบนี้จึง -1 ...
Esailija

3

หลังจากคำตอบทั้งหมดนี้ฉันต้องการให้คะแนนเพิ่มเติมกับ Mathew Foscarini

  • คุณพิจารณาปัญหาในขณะนี้เป็น "ตัวสร้างภาษา" คุณลองเข้าใจว่าทำไมภาษาอื่นมีคุณสมบัตินี้หรือมีคุณสมบัติดังกล่าวให้เลือกว่าจะใช้อะไรเป็นภาษาของคุณ ฉันอยู่ในตำแหน่งเดียวกันหลายปีเพราะการพัฒนาตัวแยกวิเคราะห์ SQL สำหรับฐานข้อมูล Valentina ของเรา
  • ฉันแนะนำให้คุณดู antlr.org และอ่านหนังสือจาก Terence มันมีสิ่งดีๆมากมายสำหรับนักพัฒนาภาษา
  • ฉันยังไม่เห็นด้วยกับ "เหตุผล" เปิดเผยโดยคำตอบอื่น ๆ พวกเขาคิดว่าผู้เขียน PHP ในหัวได้ตัดสินใจที่จะใช้ $ เพื่อให้สามารถใช้คำหลักที่สงวนไว้และแยกแยะความแตกต่างของตัวแปรที่ไม่ใช่ตัวแปรได้ดีขึ้น ฉันไม่คิดอย่างนั้น ... แม้ว่าการพิสูจน์จะเป็นเพียงเรื่องราวของเขา / ของเขาเอง
  • อาจเป็นไปได้ว่าพวกเขาเพียงทำตามภาษา Perl และภาษาเริ่มต้นมากขึ้น ขีดเส้นใต้ Terrence ภาษาส่วนใหญ่คล้ายกันโดยเฉพาะในส่วนของ LEXER และโดยปกติแล้วนวกรรมิกของภาษาใหม่จะสามารถเลือกได้ว่าเขาจะพัฒนาภาษาประเภทใดแล้วใช้ไวยากรณ์ของภาษานั้น และนี่คือสิ่งที่คุณควรทำตอนนี้ ไม่จำเป็นต้องประดิษฐ์ตั้งแต่เริ่มต้น และฉันก็เดิมพันเหมือนกันกับผู้เขียน PHP
  • ทุกสิ่งที่ผู้คนพูดถึง:
    • แยกแยะความแตกต่างจากตัวแปรที่ไม่ใช่
    • คำ reserver เป็นชื่อตัวแปร
    • ความสามารถในการวางตัวแปรภายในของสตริง
    • อาจเป็นอย่างอื่น (ฉันไม่ใช่ผู้เชี่ยวชาญใน PHP)

เป็นผลข้างเคียงของ LEXER นี้เพราะสามารถรับรู้โทเค็นได้

ทำตามตัวอย่าง: ใน SQL เราใช้ "" เพื่อให้สามารถใช้ตัวระบุด้วยคำที่สงวนไว้และแม้แต่ตัวระบุที่มีช่องว่าง "ชื่อ", "ชื่อกลุ่ม" GROUP เป็นคำหลัก มีปัญหา - มีวิธีแก้ปัญหาพิเศษ

ปล. ความคิดเห็นดีมากจาก MichaelT


+1 ขอบคุณสำหรับลิงค์ที่ดีเยี่ยม ฉันลงเอยด้วยการใช้อันนี้ แต่ลิงค์ของคุณดูดีขึ้นมาก goldparser.org
ซ้ำ

ขอบคุณสำหรับลิงค์ของคุณ ฉันไม่เคยเห็นตัวแยกวิเคราะห์ทองคำนี้มาก่อน ดูน่าสนใจเช่นกัน
Ruslan Zasukhin

@RuslanZasukhin ถ้าคุณอ้างอิงถึงคำตอบของฉันฉันไม่เคยบอกว่ามันเป็นความตั้งใจของนักพัฒนาในการเปิดใช้งานคำหลัก $ฉันเท่านั้นที่บอกว่าใช้คำหลักที่เป็นชื่อตัวแปรที่จะเป็นไปได้ในทางเทคนิคเมื่อตัวแปรจะมีคำนำหน้าสัญลักษณ์เช่น นอกจากนี้ยังมี"ความสามารถให้กับตัวแปรขึ้นภายในสตริง"$ไม่ได้เพราะของตัวแปรที่ถูกนำหน้าด้วยสัญลักษณ์เช่น นั่นคือ"123 $foo 456"จะทำงานถ้าแม้ว่าไวยากรณ์ตัวแปรเป็นเหมือนหรือfoo = 3 @foo = 3พวกเขาไม่เกี่ยวข้องกัน
Esailija

3

... a sigil อนุญาตให้:

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

  • ใช้คำสงวนหรือชื่อฟังก์ชั่นเป็นชื่อตัวแปร บางครั้งฉันพบว่าชื่อเหล่านั้นเป็นชื่อที่ถูกต้องสำหรับตัวแปร (เช่น$countในขณะที่มีcount()ฟังก์ชั่นที่กำหนดไว้) และขอบคุณ sigils ที่อนุญาตให้ฉันใช้พวกเขา

นอกจากนี้ฉันยังได้ทำชื่อฟังก์ชั่นที่นำมาใช้ซ้ำบ่อยครั้งสำหรับการเก็บผลลัพธ์ของฟังก์ชันในตัวแปร throwaway เช่น:

$isdir=isdir($dir);

if(/* complex condition implying $isdir */) {
/* etc */
}


1
ZHR หมายถึงอะไรดีกว่า ใน C ++ เราเขียนตัวแปรทั้งหมดโดยไม่มี $ และเราแยกแยะตัวแปรเหล่านั้นได้อย่างสมบูรณ์และง่ายดาย ตัวอย่าง: {int z = 0; z = 55; Z (z); } และใน C ++ เรายังสามารถใช้ชื่อฟังก์ชั่นหากจำเป็นต้องกำหนดเช่นตัวชี้ไปยังฟังก์ชั่น
Ruslan Zasukhin

@RuslanZasukhin นักคอมพิวเตอร์ไม่รู้หนังสือคุณรู้บ้างไหม? ลองสอนพวกเขาด้วย C ++ คุณจะประหลาดใจ
ZJR

ยัง: ฉันไม่คิดว่า sigil จะต้องเป็น$สัญญาณเสมอ ฉันจำได้ว่าเครื่องหมายดอลลาร์ทำให้ฉันสับสนเมื่อฉันยังเป็นเด็กเนื่องจากความสัมพันธ์ทางการเงินโดยธรรมชาติ %อาจเป็นทางเลือกที่เป็นไปได้
ZJR
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.