Bạn đã thấy đâu đó hàm main()
, là hàm bắt đầu của mọi ứng dụng D.
Hàm có thể trả về giá trị, hoặc không trả về giá trị nào (void
),
còn đầu vào của hàm có thể có tùy ý tham số.
int add(int lhs, int rhs) {
return lhs + rhs;
}
auto
tự xác định kiểu trả vềKiểu trả về của hàm có thể được D nội suy từ biểu thức định nghĩa hàm.
Các biểu thức return
khác nhau trong hàm phải trả về những kiểu giá trị
tương thích nhau.
auto add(int lhs, int rhs) { // trả về kiểu `int`
return lhs + rhs;
}
auto lessOrEqual(int lhs, int rhs) { // trả về kiểu `double`
if (lhs <= rhs)
return 0;
else
return 1.0;
}
Tham số đầu vào của hàm có thể nhận giá trị mặc định, nhờ cách này lập trình viên đỡ mất công định nghĩa chồng hàm.
void plot(string msg, string color = "đỏ") {
...
}
plot("D tuyệt");
plot("D tuyệt", "xanh");
Khi một tham số được chỉ ra giá trị mặc định, tất cả tham số theo sau nó cũng phải được chỉ ra giá trị mặc định.
Bạn có thể định nghĩa hàm bên trong hàm khác, chỉ để sử dụng bên trong ngữ cảnh của hàm này, còn bên ngoài thì không thể truy cập được. Tất nhiên, từ hàm bên trong có thể nhìn thấy các biến, đối tượng bên ngoài nó.
void fun() {
int local = 10;
int fun_secret() {
local++; // local ở ngoài nhé
}
...
Hàm lồng nhau này được gọi là ủy nhiệm (delegate), và sẽ được mô tả chi tiết hơn ở đây.