Call by name là gì?

Phrase Programming
Gọi theo tên

Gọi theo tên (call by name) đã được sử dụng trong ngôn ngữ lập trình ban đầu Algol 60. Nó yêu cầu callee thực thi như thể tham số thực tế (actual parameter) được thay thế theo nghĩa đen cho tham số hình thức ( formal parameter) trong mã của callee, như thể tham số hình thức là macro thay thế cho tham số thực tế. Khi tham số thực tế là một biểu thức (expression) chứ không phải là một biến, một số hành vi không trực quan xảy ra, đó là một lý do khiến cơ chế này ngày nay không được ưa chuộng.. Ví dụ:


int fun(int a, int b) 
{ 
	return a*b; 
} 

Lời gọi hàm fun(3 + 5, 6 + 2). Nếu gọi theo tham chiếu (call by reference) thì kết quả là 64. Nhưng nếu gọi theo tên (call by name) thì kết quả là 3 + 5 * 6 + 2 = 35

Một ví dụ khác:


int original, alternate; 
cout<<"Enter the value";    
cin>>original; 
alternate=&original; 
cout<<endl<<"The value is"<<alternate; 

Gọi theo tham chiếu sẽ in

1 2 3 9 5

Gọi theo tên sẽ in

9 2 3 4 5
Learning English Everyday