3. ตัวแปรและการตั้งค่า

อัดรูปดิจิตอล ทำสมุดภาพของคุณเอง
รอรับได้. ท่องเที่ยว แต่งงาน ฯลฯ

www.tanabutr.co.th/photobook


เท่ีาที่ผ่านมา เวลาที่เราใช้ puts แสดงตัวเลขหรือสตริงก์, สิ่งที่เราแสดงจะแสดงแล้วหายไป. ผมหมายความว่า, ถ้าเราต้องแสดงอะไรสองครั้ง, เราต้องพิมพ์สองครั้ง

puts '...you can say that again...'
puts '...you can say that again...'
...you can say that again...
...you can say that again...

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

เพื่อที่จะเก็บสตริงก์ในหน่วยความจำ (memory) ของเครื่องคอมพิวเตอร์, เราต้องตั้งชื่อให้สตริงก์. โปรแกรมเมอร์มักจะเรียกการกระทำอย่างนี้ว่าการตั้งค่า (assignment), และเรียกชื่อที่ใช้ตั้งชื่อว่าตัวแปร(variable). ตัวแปรสามารถเป็นอะไรก็ได้เช่นตัวอักษรหรือตัวเลขที่เรียงกัน, แต่ตัวอักษรตัวแรกต้องเป็นตัวอักษร(ภาษาอังกฤษ)ตัวเล็ก. ลองดูโปรแกรมสุดท้ายอีกทีหนึ่ง, แต่คราวนี้เราจะตั้งชื่อให้สตริงก์ว่า myString (คิดดูก็ได้ว่าผมจะตั้งชื่อเป็น str หรือ myOwnLittleString หรืิอ henryTheEighth ก็ได้)

myString = '...you can say that again...'
puts myString
puts myString
...you can say that again...
...you can say that again...

เมื่อไรก็ตามที่คุณทำอะไรกับบางอย่างกับ myString, โปรแกรมจะหมายถึง '...you can say that again...'. ต่อไปนี้เป็นตัวอย่างที่น่าสนใจกว่า

name = 'Patricia Rosanna Jessica Mildred Oppenheimer'
puts 'My name is ' + name + '.'
puts 'Wow!  ' + name + ' is a really long name!'
My name is Patricia Rosanna Jessica Mildred Oppenheimer.
Wow!  Patricia Rosanna Jessica Mildred Oppenheimer is a really long name!

เราสามารถตั้งค่า (assign)ตัวแปรให้กับอ็อบเจคได้ด้วย, และตั้งค่่าอีกครั้ง (reassign) ให้กับตัวแปรเป็นอ็อบเจคคนละตัวก็ได้. (นี่ก็เป็นเหตุผลว่าทำไมเราเรียกมันว่าตัวแปร: เพราะสิ่งที่มันชี้แปรเปลี่ยนไปได้เรื่อยๆ)

composer = 'Mozart'
puts composer + ' was "da bomb", in his day.'

composer = 'Beethoven'
puts 'But I prefer ' + composer + ', personally.'

แน่นอนว่าตัวแปรสามารถชี้ไปที่อ็อบเจคแบบไหนก็ได้, ไม่จำเป็นต้องเป็นสตริงก์.

var = 'just another ' + 'string'
puts var

var = 5 * (1+2)
puts var
just another string
15

ความจริงแล้ว, ตัวแปรสามารถชี้ได้ทุกอย่าง ... ยกเว้นตัวแปรตัวอื่น. แล้วจะเป็นอย่างไรถ้าเราลองทำดู.

var1 = 8
var2 = var1
puts var1
puts var2

puts ''

var1 = 'eight'
puts var1
puts var2
8
8

eight
8

ในตอนแรกที่เราพยายามให้ var2 ชี้ไปที่ var1, จริงๆแล้วมันชี้ไปที่ 8 แทน (เหมือนกับที่ var1ชี้ไป). หลังจากนั้นเราก็ให้ var1 ชี้ไปที่ 'eight', แต่เพราะว่า var2 จริงๆแล้วไม่ได้ชี้ไปที่ var1, มันยังคงอยู่ที่ 8

ตอนนี้เราก็ได้ ตัวแปร, ตัวเลข, และสตริงก์ แล้ว, มาเรียนวิธีการใช้งานผสมกันดีกว่า!