นี่คือ คู่มืออ้างอิงไวยากรณ์ 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)
อาจชอบอ่านรายชื่อทั่วไปขององค์ประกอบไวยากรณ์อีกด้วย
ขอบคุณที่อ่านครับ 🙂