Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Ruby

ตัวเลือกล่ามทับทิม &วิธีใช้งานอย่างถูกต้อง

ล่าม Ruby คือโปรแกรมที่อ่านและรันโค้ด Ruby

แต่…

คุณรู้หรือไม่ว่าตัวแปล Ruby เริ่มต้น (MRI) มีตัวเลือกบรรทัดคำสั่งที่น่าสนใจและมีประโยชน์มากมาย

ถูกใจ :

ruby -v

ซึ่งจะให้เวอร์ชัน Ruby ที่คุณใช้อยู่ในขณะนี้

หรือ -e ธงซึ่งอนุญาตให้คุณเรียกใช้โค้ดเล็กน้อยได้โดยตรง โดยไม่ต้องมีไฟล์ &โดยไม่ต้องไปที่ irb .

ถูกใจสิ่งนี้ :

ruby -e 'puts 123'

คุณสามารถค้นหาแฟล็กเหล่านี้ได้โดยใช้ -h .

มีแฟล็ก "ซ่อนอยู่" บางอันที่คุณสามารถดูได้ด้วย --help .

นี่คือตารางของสิ่งที่ฉันคิดว่าเป็น…

ธงที่น่าสนใจที่สุด :

ตั้งค่าสถานะ คำอธิบาย
-v พิมพ์เวอร์ชัน Ruby
-c ตรวจสอบไวยากรณ์
-e เรียกใช้โค้ดโดยตรง
-w เปิดใช้งานคำเตือน
-r ต้องการไฟล์ / gem
-I เพิ่มไดเร็กทอรีเพื่อโหลดเส้นทาง
–เปิดใช้งาน frozen-string-literal ตรึงสตริงทั้งหมด
–dump parsetree แสดงต้นไม้แยกวิเคราะห์

มาโฟกัสที่แฟล็กเหล่านี้เพื่อดูว่ามันทำงานอย่างไร!

ตรวจสอบไวยากรณ์

หากคุณมีรหัส &ต้องการทราบว่าไวยากรณ์ถูกต้องหรือไม่ คุณสามารถใช้ -c ตัวเลือก CLI

ตัวอย่าง :

ruby -c code_without_syntax_errors.rb
# Syntax OK

ruby -c code_with_syntax_errors.rb
# syntax error, unexpected tIDENTIFIER, expecting end-of-input

เรียบง่ายแต่ได้ผล 🙂

ต้องการด่วน

บางครั้ง คุณต้องการให้ gem ลงในโปรแกรม Ruby ชั่วคราวโดยไม่ต้องเขียน "require" ที่ด้านบนของไฟล์

ราวกับอัญมณีแห่งการดีบัก

ตัวอย่าง :

ruby -rpry code.rb

มีประโยชน์มาก!

ธงเตือน

การใช้แฟล็กคำเตือนจะเปิดใช้ผ้าสำลีและแสดงปัญหาที่อาจเกิดขึ้นกับโค้ดของคุณ

ตัวอย่างเช่น รหัสนี้ :

p @test

พิมพ์คำเตือนต่อไปนี้เมื่อคุณใช้ ruby -w :

warning: instance variable @test not initialized

นี่เป็นคำเตือนที่ดี!

เนื่องจากคุณอาจพยายามใช้ตัวแปรอินสแตนซ์โดยไม่ได้ให้ค่ามันก่อน

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

การแก้ไขทำได้ง่าย :

@test = nil

นี่เป็นอีกตัวอย่างหนึ่ง:

c = 1

สิ่งนี้จะทำให้คุณ :

warning: assigned but unused variable - c

ในการแก้ไขคำเตือนนี้ คุณสามารถลบตัวแปรหรือใช้งานได้

ใช้ได้เฉพาะกับ ตัวแปรภายในเครื่อง .

แต่คุณควรรู้ว่าภายในอาร์กิวเมนต์บล็อก ถือเป็น "แนวทางปฏิบัติที่ดีที่สุด" ในการแทนที่อาร์กิวเมนต์ที่ไม่ได้ใช้ด้วยขีดล่าง (_ )

ตัวอย่าง :

{ chocolate: 82 }.map { |k, _| k }

นี่เป็นธรรมเนียมปฏิบัติทั่วไปใน Ruby

_ ไม่ได้พิเศษ แค่เป็นชื่อตัวแปรที่ถูกต้องเท่านั้น

ตัวอย่างคำเตือนเพิ่มเติม

ผลลัพธ์ของโค้ดต่อไปนี้จะไม่ถูกส่งกลับจากเมธอดหรือกำหนดให้กับตัวแปรใดๆ

2 * 2

Ruby เตือนคุณแบบนี้ :

warning: possibly useless use of * in void context

การแก้ไข?

ลบคำสั่งที่ไร้ประโยชน์หรือกำหนดให้กับตัวแปร

มาดูวิธีนี้กัน :

def orange(weight, quantity)
  # ...
end

มีหลายวิธีในการเรียก orange :

orange 100, 2
orange(100, 2)

orange *[100, 2]
orange(*[100, 2])

หากคุณใช้ orange *[100, 2] เมื่อเปิดใช้งานคำเตือนคุณจะได้รับสิ่งนี้:

warning: '*' interpreted as argument prefix

เกิดอะไรขึ้น

ความคลุมเครือ

Ruby คิดว่าคุณหมายถึง orange * [100, 2] แทนที่จะเป็น orange *[100, 2] .

ช่องว่างระหว่าง * &[ สร้างความแตกต่างเพราะมันเชื่อมโยง * กับอาร์เรย์ (ตัวดำเนินการ splat) หากหายไปหรือคิดว่า * เป็นการเรียกเมธอดถ้ามี

ใช่ ในกรณีนี้ พื้นที่มีความสำคัญ

คุณแก้ไขคำเตือนนี้ได้โดยเรียกใช้เมธอดด้วยวิธีอื่น

ตอนนี้ :

รันโค้ดของคุณเองด้วย -w ตั้งค่าสถานะและปรับปรุงโดยลบคำเตือนออก 🙂

Read-Eval-Print-Loop

คุณอาจคุ้นเคยกับ irb &pry ​​ซึ่งเป็นสิ่งที่เราเรียกว่า REPL

การใช้ -n ธงรวมกับ -e ตั้งค่าสถานะคุณจะได้รับเอฟเฟกต์ที่คล้ายกันด้วยโค้ดเพียงเล็กน้อย

นี่คือตัวอย่าง :

echo 'bacon\nchocolate\norange' | ruby -ne 'puts $_.upcase'

# BACON
# CHOCOLATE
# ORANGE

นี่รับอินพุตจาก echo จากนั้นสำหรับแต่ละบรรทัดจะเรียกรหัสของคุณ (puts $_.upcase )

โดยที่ $_ เป็นตัวแปรพิเศษที่มีค่าอินพุตสุดท้ายที่อ่านโดย gets .

ธงตัวอักษรสตริงแช่แข็ง

Ruby 2.3 แนะนำตัวอักษรสตริงที่ตรึงไว้ "ความคิดเห็นวิเศษ"

หน้าตาเป็นแบบนี้ :

# frozen_string_literal: true

สิ่งนี้จะ หยุดสตริงทั้งหมดของคุณ ทำให้เปลี่ยนรูปไม่ได้ (เปลี่ยนไม่ได้)

อีกวิธีในการทำเช่นนี้คือการส่ง --enable frozen-string-literal ตั้งค่าสถานะเป็น Ruby

รหัสนี้ :

str = "abcdef"

str[0] = "b"

ส่งผลให้เกิดข้อผิดพลาดนี้เมื่อคุณใช้แฟล็กนั้น:

can't modify frozen String (FrozenError)

แต่ถ้าคุณต้องการเปลี่ยนสตริงล่ะ?

คุณก็ทำได้ :

str = "abcdef".dup

หรือนี่ :

str = +"abcdef"

ทั้งสองให้สตริงที่ไม่ตรึงไว้ให้คุณใช้งานได้

สรุป

คุณได้เรียนรู้เกี่ยวกับตัวเลือกบรรทัดคำสั่งของ Ruby แล้ว รวมถึงแฟล็กเวอร์ชัน แฟล็กคำเตือน และตัวอักษรสตริงที่ตรึงไว้ แฟล็กทั้งหมดนี้มีประโยชน์ ลองใช้เลย!

อย่าลืม แชร์บทความนี้ เพื่อให้ผู้คนได้รับประโยชน์มากขึ้น

ขอบคุณที่อ่านนะคะ 🙂