Hash Rocket เลิกใช้งานแล้วหรือยัง


99

โพสต์จรวด RIP Hash ที่อ้างถึงอย่างดีดูเหมือนจะบ่งบอกถึงไวยากรณ์ Hash Rocket ( :foo => "bar") นั้นเลิกใช้แล้วเนื่องจากแฮชสไตล์ JSON แบบใหม่เป็น Ruby ( foo: "bar") แต่ฉันไม่พบการอ้างอิงที่ชัดเจนใด ๆ ที่ระบุแบบฟอร์ม Hash Rocket เลิกใช้งานจริง / ไม่ได้รับการแก้ไขเมื่อ Ruby 1.9


ฉันคิดว่าผู้ชายคนนั้นใช้ Ruby กับ Rails เท่านั้น
Niklas B.

ใช้ชีวิตติดจรวด
นาน

Rocket ยังคงแข็งแกร่ง🚀
mahemoff

คำตอบ:


132

ผู้เขียนบล็อกโพสต์ที่เป็นมากเกินไปอย่างมากและโง่เขลาที่ =>เป็นยัง ค่อนข้าง จำเป็น โดยเฉพาะอย่างยิ่ง:

  1. คุณต้องใช้จรวดสำหรับสัญลักษณ์ที่ไม่ใช่ป้ายกำกับที่ถูกต้อง: :$set => xใช้ได้ แต่$set: xไม่ถูกต้อง ใน Ruby 2.2+ คุณสามารถแก้ไขปัญหานี้ได้ด้วยเครื่องหมายคำพูด: '$set': xจะทำในสิ่งที่ถูกต้อง

  2. คุณต้องใช้จรวดหากคุณใช้กุญแจในแฮชที่ไม่ใช่สัญลักษณ์เช่นสตริงจำนวนเต็มหรือค่าคงที่ ตัวอย่างเช่น's' => xใช้ได้ แต่'s': xเป็นสิ่งที่แตกต่างอย่างสิ้นเชิง

คุณสามารถกำจัดสิ่งที่กล่าวมาข้างต้นได้อย่างชัดเจน:

h = { }
h[:'where.is'] = 'pancakes house?'
# etc.

แต่มันน่าเกลียดและไม่จำเป็น

จรวดจะไม่ไปไหนโดยไม่ทำให้แฮชของรูบี้พิการ


6
s / ดราม่ามากเกินไปและโง่เขลา / น่าทึ่งและสนับสนุนด้วยการแสดงความเคารพอย่างฉะฉาน /. คะแนนที่เหลือของคุณยืนอยู่
dbenhur

17
คุณต้องสงสัยว่าการใช้ไวยากรณ์ใหม่เมื่อคุณยังคงต้องพึ่งพาไวยากรณ์แบบเก่าสำหรับบางสถานการณ์จะทำให้โค้ดของเราซับซ้อนขึ้นหรือไม่
Dave Rapin

4
@DaveRapin: นั่นเป็นเหตุผลที่ฉันไม่ต้องกังวลกับไวยากรณ์ที่ไม่ใช่จรวด ฉันทำงาน MongoDB ได้พอสมควรและฉันมักใช้สัญลักษณ์ที่ไม่ใช่เป็นปุ่ม Hash (ไม่ต้องสนใจทั้งหมดที่h[:s]ฉันทำ) ดังนั้นไวยากรณ์สไตล์ JavaScript จึงเป็นเพียงความซับซ้อนที่ไม่มีจุดหมายสำหรับฉัน ดูเหมือนเป็นความคิดที่ไม่ดีสำหรับฉันและตอนนี้เราติดอยู่กับมันและความสับสนที่เกี่ยวข้องตลอดไป
สั้นเกินไป

8
@DaveRapin พิจารณาa = [0,1,4,9]เทียบกับa = Array.new(4){ |i| i**2 }. ทำไมต้องใช้อดีตเมื่อบางครั้งคุณต้องใช้แบบหลัง? คำตอบ: เพราะสะดวกกว่า TIMTOWTDI ทำให้ภาษาซับซ้อน แต่นี่เป็นการแลกเปลี่ยน Lua เป็นแกนหลักที่สง่างามจริงๆและด้วยเหตุนี้จึงง่ายต่อการเรียนรู้ แต่น่ารำคาญในการเขียนโค้ด Ruby มีเคสพิเศษและคุณสมบัติแบบกำหนดเองมากมายที่ทำให้เรียนรู้ได้ยากขึ้น แต่ก็มีความสุขในการเขียนโปรแกรม I สำหรับหนึ่งยินดีต้อนรับ สัญกรณ์ Hash-with-symbol-keys ที่ง่ายกว่าและอ่านง่ายกว่าสำหรับกรณีทั่วไป
Phrogz

7
แม้ว่าจะพิมพ์สนุกน้อยกว่า แต่ฉันก็ชอบแฮชจรวดมากกว่า ทำไม? เพราะหมายความว่าเมื่อใดก็ตามที่ฉันใช้สัญลักษณ์สำหรับคีย์ฉันสามารถค้นหาได้ทุกที่ในโปรเจ็กต์ของฉันโดยการค้นหาสตริงที่เริ่มต้นด้วยเครื่องหมาย สำหรับฉันแล้วการขาดความสอดคล้องระหว่างอักขระจริงที่ใช้แสดงถึงคีย์my_hash = {a:1}และmyhash[:a] = 1อย่างน้อยก็ค่อนข้างน่ารำคาญ ฉันแน่ใจว่าไม่ใช่คนเดียวที่รู้สึกแบบนี้
Huliax
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.