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

คู่มือไวยากรณ์ Ruby สำหรับมือใหม่: รีวิวและรีเฟรชความรู้อย่างรวดเร็ว

นี่คือ คู่มืออ้างอิงไวยากรณ์ Ruby

การเรียน Ruby อาจทำรู้สึกท่วมท้นกับสิ่งที่ต้องจดจำเยอะเกินไป

เลยรวบรวม คู่มือไวยากรณ์ นี้ไว้ให้คุณ!

จะช่วยรีเฟรชความจำ และทบทวนสิ่งที่จำเป็นสำหรับการเขียนโปรแกรม Ruby ให้รวดเร็วขึ้น

สนุกกับการเรียนกันเถอะ!

สารบัญ

  • 1 Strings (สตริง)
  • 2 Hashes (แฮช)
  • 3 Symbol (สัญลักษณ์)
  • 4 Nil
  • 5 Array (อาร์เรย์)
  • 6 Enumerable
  • 7 File (ไฟล์)
  • 8 Regular Expression (นิพจน์ปกติ)
  • 9 Ruby Gems & Bundler
  • 10 Classes & Object-Oriented Programming (คลาสและ OOP)
  • 11 Types Of Variables (ประเภทของตัวแปร)
  • 12 %w, %i, %q, %r, %x
  • 13 Use of Parenthesis (การใช้วงเล็บ)
  • 14 Examples (ตัวอย่าง)
    • 14.1 Method definition (การกำหนดเมธอด)
    • 14.2 Class definition (การกำหนดคลาส)
    • 14.3 Ternary operator (โอเปอเรเตอร์ทอนารี)
    • 14.4 String interpolation (การแทรกค่าตัวแปรในสตริง)
    • 14.5 Each with block (Each พร้อมบล็อก)
    • 14.6 If / Else
    • 14.7 Case statement (คำสั่ง Case)
  • 15 Summary (สรุป)
    • 15.1 Related (บทความเกี่ยวข้อง)

Strings (สตริง)

สตริงคือลำดับของตัวอักษรที่อยู่ภายในเครื่องหมายคำพูดคู่ ("") ใช้แทนข้อความและข้อมูล

ตัวอย่างไวยากรณ์:

 "I like chocolate" 

อีกทางหนึ่งคือใช้เครื่องหมายคำพูดเดี่ยว ('')

 'Ruby is awesome' 

เมธอดสำคัญ:

  • size
  • empty?
  • include?
  • gsub
  • split

เมธอดเพิ่มเติม: Ruby String Methods

Hashes (แฮช)

แฮช ({}) คือโครงสร้างข้อมูลคู่คีย์-ค่า (a => b) ใช้เหมือนพจนานุกรม สามารถเข้าถึงข้อมูลในแฮชได้ด้วยคีย์ คีย์จะต้องไม่ซ้ำกัน

ตัวอย่าง:

 # สร้าง
h = { a: 1, b: 2, c: 3 }
# เข้าถึง
h[:a]
# กำหนดค่า
h[:test] = 10 

สังเกตว่า แฮชใหม่สร้างด้วย {} (วงเล็บปีกกา) แต่เข้าถึงสมาชิกด้วย [] (วงเล็บจัตุรัส) — จุดนี้สับสนมือใหม่บ่อย จดจำไว้!

แฮชที่ใช้คีย์เป็นสตริง:

 h = { "a" => 1, "b" => 2, "c" => 3 } 

เมธอดสำคัญ:

  • key?
  • fetch
  • new (สำหรับค่าเริ่มต้น)
  • merge

เมธอดเพิ่มเติม: Ruby Hash Methods

Symbol (สัญลักษณ์)

สตริงคงที่ (static) ใช้สำหรับระบุตัวตน ตัวอย่างทั่วไปคือคีย์ของแฮช เริ่มต้นด้วยทวิภาคเสมอ (:bacon) Symbol ไม่ได้ใช้สำหรับเนื้อหา (ตัวอักษรแต่ละตัว)

เมื่อใช้ภายในวงเล็บปีกกาของแฮช ({}) ตำแหน่งของทวิภาคจะกลับด้าน

ตัวอย่าง:

 { abc: 1 } 

นี่คือ Symbol :abc

เรียนรู้เพิ่มเติม: Ruby Symbols

Nil

คลาสแบบ Singleton (มีออบเจ็กต์เดียว) แทนค่าเริ่มต้นหรือค่า "ไม่พบ" ประเมินผลเป็น "false" ในบริบทเงื่อนไข

เรียนรู้เพิ่มเติม:

Array (อาร์เรย์)

ออบเจ็กต์สำหรับแทนลิสต์ของออบเจ็กต์ อาร์เรย์เก็บออบเจ็กต์ชนิดไหนก็ได้ (a = [1, "abc", []]) รวมถึงอาร์เรย์ซ้อนอาร์เรย์

เข้าถึงสมาชิกด้วยดัชนี (a[0]) และอาร์เรย์ซ้อนด้วย a[0][0]

ตัวอย่าง:

 a = []
a << 10
a << 20
a << 30
a # [10, 20, 30] 

เมธอดสำคัญ:

  • size
  • empty?
  • push / pop
  • join
  • flatten

เมธอดเพิ่มเติม: Ruby Array Documentation

Enumerable

โมดูลของ Ruby ใช้วนลูปผ่านสมาชิกของคลาสใดก็ตามที่มีเมธอด each เช่น Array, Range, Hash

เมธอดสำคัญ:

  • map
  • select
  • inject

เพิ่มเติม: A Basic Guide to The Ruby Enumerable Module

File (ไฟล์)

คลาสช่วยจัดการไฟล์ใน Ruby — อ่าน เขียน หรือดูข้อมูลเช่นขนาดไฟล์

ตัวอย่าง:

 File.read("/tmp/test.txt") 

เมธอดสำคัญ:

  • read
  • write

เพิ่มเติม: Working with Files in Ruby

Regular Expression (นิพจน์ปกติ)

ถ้าอยากหาแพทเทิร์น สับสตริง หรือข้อมูลเฉพาะในสตริง นิพจน์ปกติคือคำตอบ

ใช้ Validate อีเมล โทรศัพท์ หรือดึงข้อมูลจากข้อความได้

ตัวอย่าง:

 "aaaa1".match?(/[0-9]/) # true
"".match?(/[0-9]/) # false 

เรียนรู้เพิ่มเติม: Ruby Regex

Ruby Gems & Bundler

Ruby Gems คือแพ็กเกจที่ดาวน์โหลดมาใช้ในโปรแกรม Ruby ให้ฟังก์ชันใหม่ๆ

เช่นใน Rails ใส่ Authentication ด้วย Devise gem หรือ Pagination ด้วย Kaminari gem

เรียนรู้เพิ่มเติม: Ruby Gems, Gemfiles & Bundler

Classes & Object-Oriented Programming (คลาสและ OOP)

Ruby เป็นภาษา Object-Oriented ทุกอย่างคือออบเจ็กต์ สร้างจาก Blueprint คือ Class

ออบเจ็กต์สามารถ "รู้" สิ่งต่างๆ และ "ทำ" สิ่งต่างๆ คุณสั่งให้ทำผ่านเมธอด

เมธอดสำคัญ:

  • class
  • include / extend

เรียนรู้เพิ่มเติม:

Types Of Variables (ประเภทของตัวแปร)

ตัวแปรคือฉลากสำหรับออบเจ็กต์ ใช้เข้าถึงออบเจ็กต์นั้น กระบวนการผูกตัวแปรกับออบเจ็กต์เรียกว่า "Variable Assignment"

ตัวอย่าง:

 a = 1 

ใน Ruby มีหลายประเภท:

  • Local variables (something)
  • Instance variables (@something)
  • Constants (Something / SOMETHING)
  • Global variables ($something)

ความแตกต่างหลักคือ "ขอบเขตการเข้าถึง" (Scope)

%w, %i, %q, %r, %x

มี Syntax พิเศษด้วยเครื่องหมายเปอร์เซ็นต์ (%) เป็น Shortcut ช่วยลดงาน

ถ้าเห็น %w ใน Ruby ตอนนี้คุณจะรู้แล้วว่ามันคืออะไร!

ตัวอย่าง:

 array_of_strings = %w(apple orange coconut)
array_of_symbols = %i(a b c)
string = %q(things)
regular_expression = %r([0-9]) 
  • %w — สร้างอาร์เรย์ของสตริง
  • %i — สร้างอาร์เรย์ของสัญลักษณ์
  • %q — สร้างสตริงโดยไม่ต้องใช้เครื่องหมายคำพูด

จำไว้ว่า % ยังเป็นโมดูลโคโลโน่ (modulo operator) อีกด้วย

Use of Parenthesis (การใช้วงเล็บ)

วงเล็บและเซมิโคลอนไม่บังคับใน Ruby แต่ใช้ได้

กฎพื้นฐาน:

  • อย่าใช้วงเล็บตอนกำหนดเมธอดไม่มีอาร์กิวเมนต์ => def foo
  • ใช้วงเล็บตอนมีอาร์กิวเมนต์ => def foo(a, b, c)
  • ใช้วงเล็บตอนอยากเปลี่ยนลำดับความสำคัญของการคำนวณ => (a.size + b.size) * 2

วงเล็บช่วยเรื่อง Readability และลำดับการคำนวณ

Examples (ตัวอย่าง)

ตัวอย่างไวยากรณ์ Ruby ทั่วไป

Method definition (การกำหนดเมธอด)

 def backup_database
  # method body
end 

เพิ่มเติมเกี่ยวกับเมธอด:

Class definition (การกำหนดคลาส)

 class Fruit
  # methods
end 

เพิ่มเติมเกี่ยวกับคลาส:

Ternary operator (โอเปอเรเตอร์ทอนารี)

 true ? "yes" : "no" 

String interpolation (การแทรกค่าตัวแปรในสตริง)

 fruit = "orange"
puts "I have an #{fruit}. Would you like a slice of it?" 

เพิ่มเติมเกี่ยว Interpolation: Ruby String Concatenation

Each with block (Each พร้อมบล็อก)

 [1,2,3].each do |n|
  puts n
end 

If / Else

 n = 20
if n > 1
  puts "Greater than 1"
else
  puts "Less than 1"
end 

Case statement (คำสั่ง Case)

 case 20
when 1..20
  puts "Between 1 & 20"
when 21..40
  puts "Between 21 & 40"
else
  puts "Not within a valid range"
end 

ที่นี่ 1..20 คือออบเจ็กต์ Range

Summary (สรุป)

คุณเรียนรู้พื้นฐานไวยากรณ์ Ruby แล้ว — เขียนโปรแกรม Ruby ได้แล้ว! ทบทวนบ่อยๆ จนกลายเป็น第二天性 (Second nature)

อาจชอบอ่านรายชื่อทั่วไปขององค์ประกอบไวยากรณ์อีกด้วย

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