การรับค่าและการแสดงผลในภาษา Ruby

ในบทก่อนหน้า ตัวอย่างของโปรแกรมที่คุณได้เห็นนั้นมีเพียงการแสดงผลเป็นส่วนมาก อย่างไรก็ตาม ในการเขียนโปรแกรมคอมพิวเตอร์ไม่ได้จำกัดเพียงแค่การแสดงผลเท่านั้น เรายังสามารถรับค่าจากคีย์บอร์ดเพื่อทำมาใช้งานในโปรแกรมของเราได้

เนื่องจากบทเรียนนี้เป็นบทเรียนเขียนโปรแกรมแบบ Console Application นั่นหมายความว่าการติดต่อกับโปรแกรมนั้นจะผ่านทางข้อความและตัวอักษรเท่านั้น สำหรับในภาษา Ruby นั้นช่องทางรับค่าและแสดงผลมาตรฐานจะเป็นคีย์บอร์ดและหน้าจอ ตามลำดับ

การแสดงผลด้วยเมธอด puts และ print

โปรแกรมโดยส่วนมากแล้วมักจะมีการแสดงผลให้กับผู้ใช้โปรแกรมได้ทราบ ในภาษา Ruby เราสามารถใช้เมธอด puts สำหรับแสดงผลข้อมูลประเภทใดๆ ออกทางหน้าจอได้ นี่เป็นตัวอย่างการแสดงผลข้อความออกทางหน้าจอ

puts "Welcome to Ruby Program"
puts "Hello World!"
puts 2019

และนี่เป็นผลลัพธ์การทำงานของโปรแกรม

Welcome to Ruby Program
Hello World!
2019

ในตัวอย่าง เราใช้เมธอด puts สำหรับแสดงข้อความและตัวเลขออกทางจอภาพ ในสองคำสั่งแรกเป็นการแสดงผลข้อมูลประเภท String และคำสั่งต่อมาเป็นการแสดงค่าของตัวเลข 2019 ออกทางหน้าจอ

นอกจากแสดงค่าที่เราส่งเข้าไปในเมธอดแล้ว ในการเรียกใช้งานเมธอดแต่ละครั้ง เมธอด puts ยังมีการเพิ่มบรรทัดใหม่ \n ให้อัตโนมัติ ดังนั้นถ้าหากคุณไม่ต้องการให้โปรแกรมขึ้นบรรทัดใหม่ คุณต้องใช้เมธอด print ในการแสดงผลแทน นี่เป็นตัวอย่างการใช้เมธอด print สำหรับแสดงผลข้อความออกทางหน้าจอ

print "One"
print "Two"
print "Three"

นี่เป็นผลลัพธ์ของโปรแกรม

OneTwoThree

ในตัวอย่าง เป็นการแสดงข้อความออกทางจกภาพด้วยเมธอด print และอย่างที่คุณได้เห็น ข้อความทั้งหมดนั้นแสดงอยู่บรรทัดเดียวกัน นั่นเป็นเพราะว่าการทำงานของเมธอด print จะไม่มีการแสดงการขึ้นบรรทัดใหม่ขึ้นมานั่นเอง

เนื่องจากเมธอด puts มีการขึ้นบรรทัดใหม่ในแต่ลำคำสั่งที่เรียกใช้งาน ในความเป็นจริงแล้วมันเพียงแนบท้ายตัวอักษรสำหรับขึ้นบรรทัดใหม่ \n ไปยังข้อความที่คุณส่งเข้าไปยังเมธอดเพื่อแสดงผล ดังนั้นสองคำสั่งต่อไปนี้ให้ผลลัพธ์ที่เหมือนกัน

puts "This is a Ruby program"
print "This is a Ruby program\n"

นั่นหมายความว่าคุณสามารถสั่งให้โปรแกรมขึ้นบรรทัดใหม่ด้วยการแสดงค่า \n ออกมา ซึ่งเป็น Escape character ของการขึ้นบรรทัดใหม่ในภาษา Ruby เหมือนในตัวอย่างด้านล่างนี้

puts "Welcome to\nRuby Program"
print "One\nTwo\n"
print "Three"

นี่เป็นผลลัพธ์ของโปรแกรม

Welcome to
Ruby Program
One
Two
Three

ในตัวอย่างจะเห็นว่าการทำงานของโปรแกรมนั้นตรงไปตรงมา โปรแกรมจะขึ้นบรรทัดใหม่ก็ต่อเมื่อเราสั่งให้มันขึ้นบรรทัดใหม่ด้วยตัวอักษร \n ยกเว้นเมธอด puts ที่จะขึ้นบรรทัดใหม่ให้เราอัตโนมัติ

นอกจากนี้ ในการใช้งานเมธอด puts และเมธอด print นั้นคุณยังสามารถส่งหลายค่าอาร์กิวเมนต์เข้าไปยังเมธอดได้ โดยแต่ละค่านั่นจะคั่นด้วยเครื่องหมายคอมมา (,) ดังในตัวอย่างต่อไปนี้

puts "Mercury", "Venus", "Earth"
print "Mars", "Jupiter", "Saturn"

นี่เป็นผลลัพธ์การทำงานของโปรแกรม

Mercury
Venus
Earth
MarsJupiterSaturn

และอย่างที่คุณได้เห็นว่าสำหรับเมธอด puts ค่าแต่ละค่าก็จะถูกต่อท้ายด้วยการขึ้นบรรทัดใหม่ \n ในขณะที่เมธอด print นั้นจะไม่มีการขึ้นบรรทัดใหม่

นอกจากนี้เรายังสามารถใช้เมธอดทั้งสองแสดงค่าในอาเรย์ได้อีกด้วย

puts [1, 2, 3, 4]
print [1, 2, 3, 4]

นี่เป็นลัพธ์การทำงานของโปรแกรม

1
2
3
4
[1, 2, 3, 4]

เมื่อเราใช้เมธอด puts กับอาเรย์ สมาชิกแต่ละค่าในอาเรย์จะถูกนำมาแสดงผลเหมือนกับการส่งค่าอาร์กิวเมนต์ปกติ ในขณะที่การใช้เมธอด print แสดงอาเรย์ในรูปแบบของอาเรย์ทีสามารถเข้าใจได้ว่าเป็นอาเรย์

การจัดรูปแบบการแสดงผลด้วยเมธอด printf

เมธอด printf นอกจากจะใช้แสดงผลในรูปแบบปกติแล้ว มันยังสามารถใช้จัดรูปแบบการแสดงผลตามรูปแบบที่เราต้องการได้ นี่เป็นรูปแบบการใช้งาน

printf(string_format, arguments)

โดยที่ string_format เป็นรูปแบบของการแสดงผลสำหรับการจัดการแสดงผลในภาษา Ruby และ arguments เป็นรายการของอาร์กิวเมนต์ตามได้ที่ได้กำหนดไว้ใน string_format

printf("%d\n", 34)          # => 34
printf("%d\n", 34.14)       # => 34
printf("%d\n", 0b100010)    # => 34
printf("%d\n", "34")    # => 34

ในตัวอย่าง เป็นการจัดรูปแบบการแสดงผลของตัวเลขจำนวนเต็ม %d นั้นเป็นตัวจัดรูปแบบการแสดงผลเพื่อแสดงตัวเลขจำนวนเต็ม โดยที่ไม่สนใจว่าอาร์กิวเมนต์ที่ส่งเข้ามานั้นจะเป็นข้อมูลประเภทไหน สิ่งเดียวที่โค้ดเหล่านี้ทำคือพยายามแปลงข้อมูลที่ได้รับมาให้เป็นตัวเลขจำนวนเต็มนั่นเอง

printf("%f\n", 3.5)     # => 3.500000
printf("%f\n", 3)       # => 3.000000
printf("%s\n", "Mateo") # => Mateo
printf("%s\n", 3)       # => 3

ในขณะที่ %d ให้สำหรับแสดงตัวเลขจำนวนเต็ม และคุณสามารถใช้ %f สำหรับแสดงตัวเลขในรูปแบบของทศนิยมได้ ในขณะเดียวกัน %s ก็ใช้สำหรับแสดงผลข้อมูลในรูปแบบของ String

name = "Mateo"
score = 5
printf("Score: %d\n", score)            # => Score: 5
printf("%s%d\n", name, score)           # => Mateo5
printf("%s has %d scores\n", name, score)   # => Mateo has 5 scores

ในตัวอย่างต่อมา แสดงให้เห็นว่าคุณสามารถกำหนดรูปแบบการแสดงผลมากกว่า 1 ตัวในอาร์กิวเมนต์แรกได้ ถ้าหากคุณทำเช่นนั้น ตั้งแต่อาร์กิวเมนต์ที่สองเป็นต้นไปคุณจะต้องส่งอาร์กิวเมนต์ไปให้ครบตามจำนวนรูปแบบที่คุณกำหนดไว้ ในตัวอย่างเราได้กำหนด %s และ %d ดังนั้นเราจึงต้องส่ง name และ score เพื่อให้มีจำนวนของข้อมูลตรงกัน

และนอกจากนี้ คุณยังสามารถใส่ข้อความลงไปพร้อมกับการจัดรูปแบบการแสดงผลได้ Ruby สามารถแยกแยะได้จากเครื่องหมาย % ที่มันเจอใน String นั่นเอง

PI = 3.141592653
printf("%f\n", PI)          # => 3.141593
printf("%.2f\n", PI)        # => 3.14
printf("%.4f\n", PI)        # => 3.1416
printf("%e\n", 16234034823) # => 1.623403e+10
printf("%e\n", 0.3481812)   # => 3.481812e-01
printf("%E\n", 1000000)       # => 1.000000E+06

ตัวอย่างต่อมาเป็นการจัดรูปแบบการแสดงผลตัวเลขทศนิยม คุณสามารถจำนวนตัวเลขทศนิยมที่ต้องการแสดงได้ %.2f เป็นการกำหนดให้มีการแสดงตัวเลขทศนิยมเพียงสองตำแหน่ง และคุณสามารถแสดงตัวเลขในรูปแบบสัญกรณ์วิทยาศาสตร์ได้โดยการใช้ %e หรือ %E

printf("%b\n", 28)      # => 11100
printf("%B\n", 28)      # => 11100
printf("%o\n", 28)      # => 34
printf("%0x\n", 28)     # => 1c

ในตัวอย่างต่อมาเป็นการแสดงตัวเลขในฐานอื่นๆ %b และ %B ใช้แสดงตัวเลขในรูปแบบของเลขฐานสอง %o ใช้แสดงตัวเลขในรูปแบบของเลขฐานแปด และ %0x ใช้แสดงตัวเลขในรูปแบบของเลขฐานสิบหก

printf("%15s\n", "marcuscode")
printf("%15d\n", 2019)
printf("%-15s\n", "marcuscode")
printf("%-15d\n", 2019)
printf("%015d\n", 2019)

นี่เป็นผลลัพธ์การทำงานของโปรแกรม

     marcuscode
           2019
marcuscode
2019
000000000002019

ในตัวอย่าง คุณสามารถกำหนดความกว้างของตัวจัดรูปแบบการแสดงผลได้โดยใส่ตัวเลขจำนวนเต็มเข้าไป %15s หมายถึงจัดความกว้างการแสดงผลสำหรับ String เป็นจำนวน 15 ตัวอักษรและชิดขวา และถ้าหากใส่เป็นค่าลบ ``%-15sการแสดงผลจะชิดซ้าย และสำหรับตัวจัดรูปแบบการแสดงผล%d` สามารถใส่ flag เป็น 0 เพื่อตัวเติมศูนย์ใส่ทางด้านซ้ายได้

นี่เป็นตัวอย่างเพียงส่วนหนึ่งเท่านั้น สำหรับรูปแบบการแสดงผลทั้งหมดที่สามารถใช้ได้ คุณสามารถดูได้ที่เอกสารของภาษา Ruby โดยตรงที่ https://ruby-doc.org/core-2.6.5/Kernel.html#method-i-sprintf

ถ้าหากคุณต้องการรับค่าของ String ที่ได้จากการจัดรูปแบบการแสดงผล คุณสามารถใช้เมธอด sprintf ได้ ซึ่งการทำงานของมันจะเหมือนกับเมธอด printf ยกเว้นแต่ว่ามันจะส่งค่ากลับมา แทนการแสดงผลออกไปที่หน้าจอ

my_str = sprintf(string_format, arguments)

การแทนค่าใน String

การแทนค่าใน String หรือ String Interpolation นั้นคือการทำงานของภาษา Ruby กับข้อมูลประเภท String ที่เมื่อตัวแปรของภาษาเจอนิพจน์ #{variable} ในข้อความ มันจะทำการแทนที่นิพจน์ดังกล่าวด้วยค่าของตัวแปร variable นั่นทำให้เราสามารถสร้าง String แบบไดนามิกส์จากค่าตัวแปรอื่นได้

name = "Mateo"
year = 1988

puts "My name is #{name}"
puts "I was born in #{year}"

นี่เป็นผลลัพธ์การทำงานของโปรแกรม

My name is Mateo
I was born in 1988

ในตัวอย่าง เป็นการแสดงชื่อและปีเกิดออกมาทางหน้าจอ สังเกตว่าเราได้มีการประกาศตัวแปรสำหรับเก็บชื่อและปีเกิด ดังนั้นเมื่อเรารันโปรแกรม Ruby พบกับนิพจน์ #{name} ในข้อความ มันจึงแทนที่นิพจน์ดังกล่าวด้วยค่าของตัวแปร name นั่นก็คือ Mateo และแทนที่นิพจน์ #{year} ด้วย 1988 ตามลำดับ

อย่างไรก็ตาม จากตัวอย่างการแทนค่าใน String ด้านบน เราสามารถแสดงผลในรูปแบบดังกล่าวได้โดยการใช้เมธอด print ซึ่งให้ผลลัพธ์ที่เหมือนกัน แต่โปรดอย่าลืมว่าวิธีนี้ไม่ใช้การแทนค่า String แต่เป็นการส่งหลายอากิวเมนต์เข้าไปในเมธอดแทน

name = "Mateo"
year = 1988

print "My name is ", name, "\n"
print "I was born in ", year, "\n"

การรับค่าด้วยเมธอด gets

นอกจากการแสดงผลออกทางหน้าจอแล้ว โปรแกรมยังสามารถรับค่าจากผู้ใช้โปรแกรมเพื่อทำมาประมวลผลหรือเป็นคำสั่งเพื่อให้โปรแกรมทำงานตามที่ต้องการ ซึ่งในภาษา Ruby นั้นเราสามารถรับค่าจากคีย์ยอร์ดได้โดยเมธอด gets

ตัวอย่างแรกสำหรับการรับค่านั้นเราจะเขียนเป็นโปรแกรมเพื่อรับชื่อของผู้ใช้โปรแกรม และหลังจากนั้นกล่าวคำทักทายชื่อที่ป้อนเข้ามา

print "Enter your name: "
name = gets.chomp

puts "Hello #{name}!"

นี่เป็นผลลัพธ์การทำงานของโปรแกรมเมื่อเรากรอกชื่อเป็น Mateo

Enter your name: Mateo
Hello Mateo!

ในตัวอย่าง โปรแกรมจะถามให้เราป้อนชื่อเข้ามาผ่านทางคีย์บอร์ด ในการทำงานของเมธอด gets นั้นการรับค่าตัวอักษรใดๆ ที่พิมพ์เข้ามาผ่านทางคีย์บอร์ดและจะสิ้นสุดเมื่อมีการกดปุ่ม Enter ดังนั้นข้อความที่เราพิมพ์และค่าของ Enter \r จะถูกส่งกลับมาจากเมธอด gets

name = gets.chomp

นี่เป็นคำสั่งแรกในการรับค่าผ่านทางคีย์บอร์ด เมธอด gets จะรอให้ผู้ใช้งานโปรแกรมป้อนชื่อเข้ามาจนกว่าผู้ใช้จะกดปุ่ม Enter ซึ่งถือว่าเป็นการสิ้นสุดการรับค่า และค่าสุดได้ที่เราได้รับจากเมธอดในครั้งนี้จะเป็น "Mateo\r"

อย่างที่เราได้บอกว่าการรับค่าด้วยเมธอด gets นั้นจะมีตัวอักษร Enter (\r) ติดท้ายมาด้วย ดังนั้นเราจึงใช้เมธอด chomp เพื่อตัดค่าดังกล่าวออกไป แล้วนำค่าที่ได้รับมาเก็บไว้ในตัวแปร name และสุดท้ายเป็นการแสดงคำกล่าวทักทายและชื่อที่เพิ่งจะรับเข้าไป

ในตัวอย่างก่อนหน้านั้นเป็นการรับค่าข้อมูลที่เป็น String เข้ามายังโปรแกรม ต่อไปมาดูตัวอย่างการรับค่าข้อมูลที่เป็นตัวเลขกัน

print "Enter quantity: "
quantity = gets.chomp.to_i

print "Enter price: "
price = gets.chomp.to_i

total_price = quantity * price
puts "Total price: $#{total_price}"

นี่เป็นผลลัพธ์การทำงานของโปรแกรม เมื่อเราป้อนค่า 8 และ 19 ให้กับโปรแกรมตามลำดับ

Enter quantity: 8
Enter price: 19
Total price: $152

ในตัวอย่าง โปรแกรมของเรานั้นเป็นโปรแกรมคำนวณหาราคาทั้งหมด (total_price) จากจำนวนทั้งหมดที่ต้องการซื้อ (quantity) และราคาต่อชิ้น (price)

quantity = gets.chomp.to_i
...
price = gets.chomp.to_i

ในสองคำสั่งนี้เป็นการรับค่าจำนวนทั้งหมดที่ต้องการซื้อและราคาต่อชิ้นตามลำดับ เช่นเดิมเราใช้เมธอด chomp เพื่อตัดค่าของ Enter ที่ติดมากับข้อมูลออกไป และเนื่องจากค่าที่ได้จากเมธอด gets นั้นเป็น String เสมอ เราจึงใช้เมธอด to_i ในการแปลง String ของตัวเลขให้เป็นตัวเลข เพื่อที่จะทำให้มันสามารถนำมาคำนวณได้ในโปรแกรมของเรา

total_price = quantity * price
puts "Total price: $#{total_price}"

หลังจากนั้นเป็นการคำนวณหาราคาทั้งหมดเก็บไว้ในตัวแปร total_price และแสดงราคาทั้งหมดออกมาทางหน้าจอ

ในตอนนี้คุณได้ทราบแล้วว่าเราสามารถรับค่าจากคีย์บอร์ดด้วยเมธอด gets ซึ่งค่าทีไ่ด้จากเมธอดนั้นจะเป็น String ดังนั้นถ้าหากเราต้องการรับค่าที่เป็นตัวเลข Integer เราจำเป็นต้องแปลงค่าที่รับมาด้วยเมธอด to_i และเช่นเดียวกันถ้าหากคุณต้องการรับค่าที่เป็น Floating number คุณจะต้องใช้เมธอด to_f เพื่อแปลงไปเป็นข้อมูลประเภทดังกล่าว มาดูตัวอย่างเพิ่มเติม

print "Enter your height in feet: "
height = gets.chomp.to_f

puts "You have #{height * 30.48} height in centimeter"

นี่เป็นผลลัพธ์การทำงานของโปรแกรมหลังจากที่เราใส่ความสูงเป็น 5.8

Enter your height in feet: 5.8
You have 176.784 height in centimeter

ในตัวอย่างเป็นโปรแกรมแปลงความสูงจากหน่วยฟุตเป็นหน่วยเซนติเมตร เนื่องจากเราต้องการรักษาค่าทศนิยมของตัวเลข เราจึงใช้เมธอด to_f เพื่อแปลงค่าที่รับมาจากเมธอด gets

จากในตัวอย่างด้านบน ถ้าหากคุณใช้เมธอด to_i ในการแปลงค่าทีไ่ด้จะเป็น 5 ไม่ใช้ 5.8 เนื่องจากว่าเมธอด to_i นั้นจะแปลง String เป็นตัวเลขจำนวนเต็มหรือ Integer นั่นเอง

การตรวจสอบประเภทของตัวแปรด้วยเมธอด p

บางครั้งเราอาจจะต้องการตรวจสอบค่าและประเภทของข้อมูลที่อยู่ในตัวแปร ในขณะที่โปรแกรมกำลังทำงานอยู่ และอย่างที่คุณรู้ว่าเพื่อที่จะดูข้อมูลในตัวแปร เราจะต้องแสดงผลค่าในตัวแปรนั้นออกมาทางหน้าจอด้วยเมธอด puts หรือ print นั่นเอง ลองพิจารณาตัวอย่างต่อไปนี้

str = "1234"
number = 1234

puts str
puts number

ในตัวอย่างเราได้ประกาศตัวแปรสองตัวสำหรับเก็บค่าของ 1234 ที่เป็นตัวเลขและข้อความ และหลังจากนั้นเราแสดงค่าในตัวแปรออกมาด้วยเมธอด puts และนี่เป็นผลลัพธ์ของโปรแกรม

1234
1234

สังเกตว่าผลลัพธ์จากตัวแปรทั้งสองนั้นให้ค่าที่เหมือนกัน นั่นเป็นเพราะว่าเมื่อเราเรียกใช้เมธอด puts ค่าทั้งหมดจะถูกแปลงเป็น String ก่อนจะนำไปแสดงผลในหน้าจอ นั่นทำให้เราไม่สามารถรู้ได้ว่าข้อความ 1234 ที่เห็นในผลลัพธ์นั้นถูกสร้างมาจากข้อมูลประเภทใด

อย่างไรก็ตาม ในภาษา Ruby นั้นเราสามารถใช้เมธอด p เพื่อตรวจสอบค่าและประเภทข้อมูลของตัวแปรเหมือนกับตอนที่มันถูกประกาศได้ จากตัวอย่างด้านบนเราจะเปลี่ยนเป็นใช้เมธอด p ได้ดังนี้

str = "1234"
number = 1234

p str
p number

และนี่เป็นผลลัพธ์จากการใช้งานเมธอด p

"1234"
1234

ในตอนนี้ คุณจะเห็นว่าการแสดงผลของข้อความ 1234 นั้นแตกต่างกันออกไปในข้อมูลแต่ละประเภท นั่นเป็นเพราะว่าก่อนการแสดงผล เมธอด p จะทำการจัดรูปแบบการแสดงผลใหม่ให้เหมือนกับ Literal ของข้อมูลประเภทนั้นๆ ดังนั้นเราสามารถรู้ได้ว่าในบรรทัดแรกเป็นข้อมูลประเภท String เพราะมันมีเครื่องหมาย Double quote (") ล้อมรอบเหมือนกับตอนที่เราประกาศนั่นเอง

นอกจากนี้ เมธอด p นั้นยังมีประโยชน์สำหรับการใช้ตรวจสอบข้อมูลในอาเรย์และ Hash

numbers = [5, 7, 2, 6, 8, 4, 1, 3]
hash = {:name => "Mateo", :age => 28}
p numbers
p hash

นี่เป็นผลลัพธ์ของโปรแกรม

[5, 7, 2, 6, 8, 4, 1, 3]
{:name=>"Mateo", :age=>28}

สังเกตว่าข้อมูลที่แสดงออกมาจะเหมือนกับ Literal ของอาเรย์และ Hash เหมือนกับตอนที่เราได้ประกาศ ดังนั้นจึงสรุปได้ว่าเมธอด p นั้นใช้สำหรับช่วยให้โปรแกรมเมอร์สามารถตรวจสอบค่าในตัวแปรในขณะที่กำลังเขียนโปรแกรมนั่นเอง ดังนั้นเราถือว่ามันเป็นเพื่อนแท้ของโปรแกรมเมอร์เลยละ

Escape characters

Escape character นั้นเป็นการรวมกันของชุดตัวอักษรที่ไม่สามารถใช้งานได้โดยตรงในการเขียนโปรแกรม อาจจะเป็นเพราะว่าตัวอักษรเหล่านั้นไม่สามารถแสดงได้แบบเป็นรูปธรรม หรือถูกใช้โดยตัวแปรภาษาเพื่อแยกแยะคำสั่งต่างๆ

Escape character จะขึ้นต้นด้วยตัวอักษร Backslash (\) ตามตัวอักษรที่ใช้แสดงความหมายที่แตกต่างกันไป ตัวอย่างเช่น \n หมายถึงการขึ้นบรรทัดใหม่ \t หมายถึงแท็บ หรือ \\ หมายถึงตัวอักษร Backslash เอง

print "#\tContinent\tPopulation\n"
print "1\tAsia\t\t4.4B\n"
print "2\tEurope\t\t741.4M\n"
print "3\tAustralia\t24.6M\n"

นี่เป็นตัวอย่างของการใช้ Escape character ในการสร้างตารางด้วยแท็บและการขึ้นบรรทัดใหม่ เมื่อตัวแปรภาษาเจอกับตัวอักษร \t มันจะถูกตีความหมายเป็นแท็บเหมือนกับที่เราพิมพ์แท็บเข้าไปใน String จริงๆ นั่นเอง

puts "This is \"double quote\" in string"
puts "This is \\ in string"

สำหรับตัวอักษรบางตัวที่ถูกใช้ในการกำหนดโครงสร้างของภาษา เช่น ตัวอักษร Double quote หรือ Backslash เพื่ออ้างถึงตัวอักษรดังกล่าว เราจำเป็นต้องทำการ Escape มันเสมอ และอย่างที่คุณเห็น เนื่องจากว่า " นั้นใช้สำหรับประกาศ String ดังนั้นเพื่ออ้างถึงหรือแสดงตัวอักษรดังกล่าวเราต้องใช้ \" แทน

นี่เป็นตารางของ Escape character ทั้งหมดในภาษา Ruby

Escape character Description
\a Bell
\b Backspace
\t Tab
\n Newline
\v Vertical tab
\f Form feed
\r Carriage return
\e Escape
\s Space
\" Double quote
\' Single quote
\\ Backslash
\nnn Octal bit pattern
\xnn Hexadecimal bit pattern
\unnnn Four digits Unicode character
\u{nnnn ...} Six digits Unicode character

ในบทนี้ คุณได้เรียนรู้เกี่ยวกับการรับค่าและการแสดงในภาษา Ruby ซึ่งนี่เป็นวิธีที่จะทำให้เราสามารถเขียนโปรแกรมที่สามารถโต้ตอบกับผู้ใช้งานได้นั่นเอง และคุณได้ทราบแล้วว่าการแสดงผลด้วยเมธอด puts และ print นั้นแตกต่างกันอย่างไร นอกจากนี้คุณยังได้รู้จักกับเมธอด p ซึ่งเป็นเมธอดที่มีประโยชน์อย่างมากสำหรับตรวจสอบประเภทของข้อมูลในระหว่างที่เรากำลังพัฒนาโปรแกรม