ล่าม 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 แล้ว รวมถึงแฟล็กเวอร์ชัน แฟล็กคำเตือน และตัวอักษรสตริงที่ตรึงไว้ แฟล็กทั้งหมดนี้มีประโยชน์ ลองใช้เลย!
อย่าลืม แชร์บทความนี้ เพื่อให้ผู้คนได้รับประโยชน์มากขึ้น
ขอบคุณที่อ่านนะคะ 🙂