ขอบเขตของตัวแปรในภาษา R
— R — 1 min read
ขอบเขตของตัวแปรในภาษา R
ในภาษา R, ขอบเขต (scope) ของตัวแปรหมายถึงส่วนของโปรแกรมที่ตัวแปรนั้นสามารถเข้าถึงหรือใช้งานได้ และขอบเขตของตัวแปรสามารถกำหนดได้โดยการประกาศตัวแปรในบล็อกหรือฟังก์ชันที่เฉพาะเจาะจง
นี่คือตัวอย่างโค้ดที่แสดงการใช้งานของตัวแปรในขอบเขตต่างๆ ในภาษา R:
# ตัวแปรแบบส่วนตัว (Private variables)my_function <- function() { x <- 5 # ตัวแปร x เป็นตัวแปรท้องถิ่นในฟังก์ชัน my\_function print(x)}
my_function() # ผลลัพธ์: 5
# ตัวแปรแบบส่วนกลาง (Global variables)x <- 10 # ตัวแปร x เป็นตัวแปรสาธารณะในที่นี้my_function <- function() { print(x) # โปรแกรมส ามารถเข้าถึงตัวแปรสาธารณะได้ทุกส่วนของโปรแกรม}
my_function() # ผลลัพธ์: 10
# ตัวแปรอาร์กิวเมนต์ (Argument variables)my_function <- function(x) { print(x) # ตัวแปร x เป็นตัวแปรอาร์กิวเมนต์ในฟังก์ชัน my\_function}
my_function(7) # ผลลัพธ์: 7`
ในตัวอย่างข้างต้น เราใช้ฟังก์ชัน my_function
เพื่อแสดงการใช้งานตัวแปรในขอบเขตต่างๆ ในภาษา R ดังนี้:
- ในส่วนของตัวแปรแบบส่วนตัว (Private variables) เราสร้างตัวแปร
x
ภายในฟังก์ชันmy_function
และสามารถเข้าถึงและแสดงค่าของตัวแปรx
ในฟังก์ชันนี้ได้ ในตัว อย่างนี้ เมื่อเรียกใช้ฟังก์ชันmy_function()
ผลลัพธ์ที่แสดงคือ5
ซึ่งเป็นค่าของตัวแปรx
ที่ถูกกำหนดในฟังก์ชันนี้เท่านั้น - ในส่วนของตัวแปรแบบส่วนกลาง (Global variables) เราสร้างตัวแปร
x
ในส่วนสาธารณะภายนอกฟังก์ชันmy_function
ซึ่งทำให้โปรแกรมสามารถเข้าถึงและใช้งานตัวแปรx
ได้ทุกส่วนของโปรแกรม ในตัวอย่างนี้ เมื่อเรียกใช้ฟังก์ชันmy_function()
ผลลัพธ์ที่แสดงคือ10
ซึ่งเป็นค่าของตัวแปรx
ที่ถูกกำหนดในส่วนสาธารณะ - ในส่วนของตัวแปรอาร์กิวเมนต์ (Argument variables) เราสร้างฟังก์ชัน
my_function
ที่รับตัวแปรx
เป็นตัวแปรอาร์กิวเมนต์ และเราสามารถเข้าถึงและแสดงค่าของตัวแปรx
ในฟังก์ชันนี้ได้ ในตัวอย่างนี้ เมื่อเรียกใช้ฟังก์ชันmy_function(7)
ผลลัพธ์ที่แสดงคือ7
ซึ่งเป็นค่าของตัวแปรx
ที่ถูกส่งเข้ามาในฟังก์ชันนี้
ในภาษา R, การเข้าถึงตัวแปรขึ้นอยู่กับขอบเขตของตัวแปรนั้น หากตัวแปรถูกกำหนดในฟังก์ชันหรือบล็อกที่มีขอบเขตจำกัด เราจะไม่สามารถเข้าถึงตัวแปรดังกล่าวจากภายนอกขอบเขตนั้นได้
อย่างไรก็ตาม หากไม่มีการกำหนดตัวแปรภายในฟังก์ชันหรือบล็อก ภายนอกขอบเขตนั้น จะสามารถเข้าถึงตัวแปรได้ และถ้ามีการเปลี่ยนแปลงค่าของตัวแปรที่อยู่นอกขอบเขตใดๆ ตัวแปรที่อยู่ในขอบเขตนั้นๆ จะถูกมองเห็นและได้รับผลกระทบจากการเปลี่ยนแปลงดังกล่าว
นี่คือตัวอย่างโค้ดที่แสดงการใช้งานของตัวแปรในขอบเขตต่างๆ ในภาษา R:
x <- 10 # ตัวแปร x ในขอบเขตสาธารณะ
my_function <- function() { x <- 5 # ตัวแปร x ในขอบเขตของฟังก์ชัน my\_function print(x) # ผลลัพธ์: 5}
my_function() # เรียกใช้ฟังก์ชัน my\_function ผลลัพธ์ที่แสดงคือ 5
print(x) # ผลลัพธ์: 10 (ค่าของตัวแปร x ในขอบเขตสาธารณะไม่เปลี่ยนแปลง)`
ในตัวอย่างข้างต้น เรากำหนดตัวแปร x
ในขอบเขตสาธารณะภายนอกฟังก์ชัน my_function
และในฟังก์ชัน my_function
เรากำหนดตัวแปร x
อีกครั้ง ดังนั้น เมื่อเรียกใช้ฟังก์ชัน my_function()
ผลลัพธ์ที่แสดงคือ 5
เพราะตัวแปร x
ที่ถูกพิจารณาในขอบเขตของฟังก์ชันนี้มีค่าเป็น 5
แต่ตัวแปร x
ในขอบเขตสาธารณะภายนอกไม ่ได้รับผลกระทบจากการเปลี่ยนแปลง
เมื่อพิมพ์ print(x)
หลังจากเรียกใช้ฟังก์ชัน my_function()
ผลลัพธ์ที่แสดงคือ 10
เนื่องจากค่าของตัวแปร x
ในขอบเขตสาธารณะภายนอกไม่ได้เปลี่ยนแปลง