Giới thiệu
Trong hướng dẫn trước, chúng ta đã tìm hiểu về các biến và kiểu dữ liệu - những danh từ trong ngôn ngữ lập trình. Giờ đây, đã đến lúc khám phá các động từ. Chúng ta sẽ cung cấp cho chương trình của mình một bộ não và cơ bắp bằng cách giới thiệu logic, sự lặp lại và các khối mã có thể tái sử dụng.
Bằng cách hoàn thành hướng dẫn này, bạn sẽ có khả năng kiểm soát cách chương trình của mình chạy, biến nó thành một công cụ mạnh mẽ và linh hoạt. Hãy cùng nhau khám phá các câu lệnh điều kiện, vòng lặp và hàm trong Object Sense (OSE).
1. Quyết Định: Logic Điều Kiện với if và switch
Các câu lệnh điều kiện cho phép chương trình của bạn đưa ra lựa chọn và thực thi mã khác nhau dựa trên việc một điều kiện có đúng hay không.
Cách phổ biến nhất để thực hiện điều này trong OSE là sử dụng khối if/elseif/else. Dưới đây là một ví dụ thực tế:
ose
if {expr}
// thực thi mã nếu điều kiện đúng
elseif {expr}
// thực thi mã nếu điều kiện khác đúng
else
// thực thi mã nếu không có điều kiện nào đúng
endif
Đối với những tình huống có nhiều lựa chọn, câu lệnh switch có thể là một giải pháp sạch sẽ hơn so với một chuỗi dài các câu lệnh if/elseif.
Ví dụ:
ose
let value = 0
if value >= 1
echo "value >= 1"
elseif value
echo "value < 1 && value not 0"
else
echo "value is 0"
endif
Ví dụ với switch
ose
switch type(object)
case v:t_string call object.StaticHello("Hello string.")
case v:t_dict call object.StaticHello("This is a dictionary.")
default echo "nothing is matched"
endswitch
2. Tự Động Hóa Các Nhiệm Vụ Lặp Lại: Giới Thiệu về Vòng Lặp
Vòng lặp là bạn đồng hành tốt nhất của bạn để tránh công việc lặp lại. Chúng cho phép bạn thực thi cùng một khối mã nhiều lần, tiết kiệm thời gian và làm cho mã của bạn trở nên sạch sẽ hơn.
Vòng lặp for
Vòng lặp for rất phù hợp để lặp qua mọi mục trong một tập hợp. Bạn có thể lặp qua một danh sách:
ose
let list = [0, 1, 2, 3, 4]
for item in list
echo item
endfor
Và bạn có thể lặp qua một từ điển để lấy cả khóa và giá trị:
ose
let dict = {'x':1, 'y':2}
for [key,val] in items(dict)
echo key . '=>' . val
endfor
Vòng lặp while
Vòng lặp while sẽ tiếp tục chạy miễn là một điều kiện nhất định đúng.
ose
let i = 0
while i < 10
if i == 5
echo "end loop"
break
endif
echo i
let i += 1
endwhile
Bạn có thể sử dụng các từ khóa như break (để thoát khỏi vòng lặp hoàn toàn) và continue (để bỏ qua đến lần lặp tiếp theo) để kiểm soát luồng.
3. Đóng Gói Logic của Bạn: Tạo Hàm Tái Sử Dụng
Hàm là chìa khóa để tổ chức mã của bạn. Chúng cho phép bạn nhóm một tập hợp các chỉ dẫn thành một khối có tên có thể tái sử dụng.
Định Nghĩa và Gọi Hàm
Dưới đây là cú pháp cơ bản để định nghĩa một hàm. Ký tự ! chỉ ra một hàm toàn cầu.
ose
function! FuncName(args?) dict?
// mã hàm
endfunction
Ví dụ với hàm tính tổng:
ose
function! Sum(x, y)
return a:x + a:y
endfun
Để gọi hàm:
ose
let sum = Sum(n1, n2) // Thành công
Hàm Lambda cho Hàm Nhanh, Vô Danh
Đối với các hàm đơn giản, bạn có thể sử dụng biểu thức lambda.
ose
let RectSize = { rect -> rect.w * rect.h }
echo RectSize({"w":100,"h":200})
Closure cho Hàm Nhớ Trạng Thái
OSE hỗ trợ closures, là các hàm ghi nhớ môi trường mà chúng được tạo ra. Đây là một tính năng mạnh mẽ để tạo ra các hàm.
ose
function! Counter()
let count = 0
function! Increment() closure
let count += 1
return count
endfun
return funcref('Increment')
endfun
4. Kết Hợp Tất Cả Lại
Hãy kết hợp những khái niệm này trong một ví dụ cuối cùng xử lý một danh sách số.
ose
function! ProcessNumbers(numbers)
let result = 0
for num in a:numbers
if num > 0
let result += num
endif
endfor
return result
endfun
Gọi hàm
ose
let numbers = [1, -2, 3, -4, 5]
Hàm đơn giản này sử dụng một vòng lặp để lặp qua, một câu lệnh điều kiện để đưa ra quyết định và bản thân nó là một khối mã có thể tái sử dụng.
Khi bạn đã quen với các câu lệnh điều kiện, vòng lặp và hàm, bạn sẽ có bộ công cụ hoàn chỉnh để viết các chương trình thực sự, có chức năng trong Object Sense. Hãy bắt đầu lập trình ngay hôm nay!