Kiểu dữ liệu và giá trị
Cùng với việc gọi hàm nhúng Symbol
, chúng ta cũng có thể sử dụng hàm riêng mà chúng ta đã định nghĩa trong mã nguồn. Giả sử chúng ta muốn in trong nhật ký không chỉ "Hello"
mà còn các lời chào khác nhau tùy thuộc vào thời gian trong ngày. Chúng ta sẽ xác định thời gian trong ngày chính xác đến từng giờ: 0-8 là buổi sáng, 8-16 là buổi chiều và 16-24 là buổi tối.
Có lý khi cho rằng cấu trúc định nghĩa của hàm mới phải tương tự như cấu trúc của hàm OnStart
mà chúng ta đã quen thuộc. Tuy nhiên, tên của nó phải là duy nhất, tức là không được trùng lặp với tên của các hàm khác hoặc các từ dành riêng. Chúng ta sẽ nghiên cứu thêm danh sách các từ này trong sách giáo khoa này, trong khi may mắn thay, chúng ta có thể đề xuất rằng từ Greeting
có thể được sử dụng làm tên.
Giống như hàm Symbol
, hàm này phải trả về một chuỗi; tuy nhiên, lần này chuỗi phải là một trong các cụm từ sau, tùy thuộc vào thời gian trong ngày: "Chào buổi sáng"
, "Chào buổi chiều"
hoặc "Chào buổi tối"
.
Được hướng dẫn bởi lẽ thường, chúng ta đang sử dụng khái niệm chung về chuỗi ở đây. Rõ ràng, nó quen thuộc với trình biên dịch, vì chúng ta đã thấy cách nó tạo ra một chương trình in văn bản được xác định trước. Do đó, chúng ta đã tiếp cận một cách trôi chảy khái niệm về các kiểu trong ngôn ngữ lập trình, một trong các kiểu là chuỗi, tức là một chuỗi các ký tự.
Trong MQL5, kiểu này được mô tả bằng từ khóa string
. Đây là kiểu thứ hai mà chúng ta biết, kiểu đầu tiên là void
. Chúng ta đã thấy một giá trị của kiểu này mà không biết đó là: Đó là giá trị "Hello, "
theo nghĩa đen. Khi chúng ta chỉ chèn một hằng số (cụ thể là một cái gì đó như văn bản được trích dẫn) vào mã nguồn, mô tả kiểu của nó là không cần thiết: tự động xác định đúng kiểu.
Sử dụng mô tả hàm OnStart
làm ví dụ, chúng ta có thể gợi ý cách hàm Greeting
sẽ hiển thị cho lần xấp xỉ đầu tiên.
string Greeting()
{
}
2
3
Văn bản này cho biết ý định của chúng ta là tạo hàm Greeting
, có thể trả về một giá trị tùy ý của kiểu chuỗi. Tuy nhiên, để hàm thực sự trả về một cái gì đó, cần phải sử dụng một câu lệnh đặc biệt với toán tử return
. Đây là một trong nhiều toán tử MQL5. Nếu hàm có kiểu giá trị trả về khác với void
, thì nó phải chứa toán tử return
.
Đặc biệt, để trả về chuỗi lời chào trước đó "Hello, "
từ hàm, chúng ta nên viết:
string Greeting()
{
return "Hello, ";
}
2
3
4
Toán tử return
dừng thực thi hàm và gửi ra phần bên phải của hàm đó. "Out" ẩn đoạn mã nguồn mà hàm được gọi từ đó.
Chúng ta chưa khám phá hết tất cả các tùy chọn để viết biểu thức có thể tạo thành chuỗi tùy ý. Tuy nhiên, trường hợp đơn giản nhất với văn bản được trích dẫn được chuyển đến đây mà không có bất kỳ thay đổi nào. Điều quan trọng là kiểu giá trị trả về phải trùng với kiểu hàm, như trong trường hợp của chúng ta. Ở cuối câu lệnh, chúng ta đặt dấu chấm phẩy.
Tuy nhiên, chúng ta muốn tạo ra những lời chào khác nhau tùy thuộc vào thời gian trong ngày. Do đó, hàm phải có một tham số xác định giờ có thể lấy các giá trị từ 0
đến 23
. Rõ ràng, số giờ là một số nguyên, tức là một số không có phần thập phân.
Đối với các giá trị số nguyên, có một kiểu int
đặc biệt trong MQL5. Giá trị này phải được gửi đến hàm Greeting
từ một vị trí khác trong chương trình, từ đó hàm này sẽ được gọi. Ở đây, trước tiên chúng ta phải đối mặt với sự cần thiết phải mô tả một ô nhớ được đặt tên, tức là một biến.