การรับค่าและการแสดงผลในภาษา 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
ซึ่งเป็นเมธอดที่มีประโยชน์อย่างมากสำหรับตรวจสอบประเภทของข้อมูลในระหว่างที่เรากำลังพัฒนาโปรแกรม