เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

R ส่งอาร์กิวเมนต์แบบ by value

ชื่อหัวข้อบอกไว้แล้ว: R ส่งอาร์กิวเมนต์แบบ by value หมายความว่าอย่างไร? พูดง่ายๆ คือ ฟังก์ชันใน R ไม่สามารถเปลี่ยนแปลงค่าของตัวแปรที่ส่งเข้าไปได้ ลองดูตัวอย่างง่ายๆ นี้ (รันในคอนโซลได้เลย):

triple <- function(x) {
  x <- 3*x
  x
}
a <- 5
triple(a)
a

ภายในฟังก์ชัน triple() อาร์กิวเมนต์ x จะถูกกำหนดค่าใหม่เป็นสามเท่าของค่าเดิม แล้วจึงคืนค่า x ใหม่นั้น ถ้าเรียกใช้ฟังก์ชันนี้โดยส่งตัวแปร a ที่มีค่าเท่ากับ 5 เข้าไป จะได้ผลลัพธ์เป็น 15 แต่ค่าของ a เปลี่ยนไปด้วยหรือไม่? หาก R ส่งค่าแบบ by reference การเปลี่ยนแปลง x ภายใน ฟังก์ชันก็จะส่งผลต่อตัวแปร a ภายนอกฟังก์ชันด้วย แต่เนื่องจาก R ส่งค่าแบบ by value อ็อบเจกต์ที่ส่งเข้าไปในฟังก์ชันจึงไม่มีวันเปลี่ยนแปลง เว้นแต่จะมีการกำหนดค่าอย่างชัดเจน a ยังคงเท่ากับ 5 แม้หลังจากเรียก triple(a) แล้ว

ข้อความใดต่อไปนี้ ไม่ถูกต้อง เกี่ยวกับโค้ดด้านล่างนี้?

increment <- function(x, inc = 1) {
  x <- x + inc
  x
}
count <- 5
a <- increment(count, 2)
b <- increment(count)
count <- increment(count, 2)

แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร

R ระดับกลาง

ดูคอร์ส

แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำจริง

เปลี่ยนทฤษฎีให้เป็นการลงมือทำด้วยแบบฝึกหัดเชิงโต้ตอบหนึ่งในของเรา

เริ่มแบบฝึกหัด