Giao diện
Module 4: Functions & Scoping 🛠️
📝 Stats
- Số lượng: 10 câu hỏi
- Độ khó: Hard
- Mục tiêu: Hiểu Lexical Scoping.
MCQ
Q1. (Scoping) Kết quả của đoạn code sau là gì?
r
a <- 10
f <- function() {
a <- 20
a
}
f()
print(a)- [ ] 20 và 20
- [ ] 20 và 10
- [ ] 10 và 10
- [ ] Error
Đáp án: 20 và 10. Giải thích: Biến
atrong hàmflà biến cục bộ (local), nó che biếnatoàn cục (global) nhưng không làm thay đổi giá trị của globala.
Q2. Hàm my_fun(a = 1, b) có tham số b không có giá trị mặc định. Nếu gọi my_fun(a=2), điều gì xảy ra?
- [ ] Lỗi ngay lập tức "b is missing".
- [ ] Hàm chạy bình thường nếu bên trong body hàm KHÔNG dùng đến
b(Lazy Evaluation). - [ ]
bnhận giá trị NULL. - [ ]
bnhận giá trị NA.
Đáp án: Hàm chạy bình thường... Lazy Evaluation.
Coding Challenge
Challenge: Function Factory
Viết một hàm make_adder(n) trả về một hàm (closure) cộng n vào tham số của nó.
r
make_adder <- function(n) {
function(x) {
x + n
}
}
add_5 <- make_adder(5)
add_5(10) # Kết quả phải là 15