一、引言:给你的程序一个"大脑"
在掌握了变量和基本类型之后,我们需要让程序具备逻辑判断和重复执行的能力。条件语句、循环和函数就是ObjectSense程序的"大脑"和"肌肉",它们使程序能够做出决策、自动化重复任务,以及模块化组织代码。
二、学会"做选择":条件语句
条件语句允许程序根据不同的条件执行不同的代码块。ObjectSense使用if-elseif-else结构:
if {expr} " todo elseif {expr} " todo else " todo endif
实际示例:
let value = 0 if value >= 1 echo "value >= 1" elseif value echo "value < 1 && value not 0" else echo "value is 0" endif
ObjectSense还支持switch分支语句,用于多分支选择:
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"
三、告别"重复劳动":循环语句
循环语句让程序能够重复执行特定代码块,大大提高代码效率。
for循环:
遍历列表:
let list = [0, 1, 2, 3, 4] for item in list echo item endfor
遍历字典:
let dict = {'x':1, 'y':2} for [key,val] in items(dict) echo key . '=>' . val endfor
while循环:
let i = 0 while i < 10 if i == 5 echo "end loop" break endif echo i let i += 1 endwhile
echo 'done'循环中可以使用break、continue等关键字进行流程控制。
四、打造你的"专属工具":函数
函数是将代码组织成可重用模块的基本方式。
函数定义:
function! FuncName(args?) dict? ... endfunction
函数调用:
function! Sum(x, y) return a:x + a:y endfun let sum = Sum(n1, n2) "Success
lambda表达式:
用于创建简短的匿名函数:
let RectSize = { rect -> rect.w * rect.h } echo RectSize( {"w":100,"h":200} )
函数闭包:
支持内部函数和闭包特性:
function! Counter() let count = 0 function! Increment() closure let count += 1 return count endfun return funcref('Increment') endfun
五、小结:组合的力量
通过一个简单的综合示例展示条件、循环和函数的协同工作:
function! ProcessNumbers(numbers) let result = 0 for num in a:numbers if num > 0 let result += num endif endfor return result endfun let numbers = [1, -2, 3, -4, 5] echo "Sum of positive numbers: " . ProcessNumbers(numbers)
这个示例展示了如何定义函数、使用循环遍历列表,以及在循环中进行条件判断。
条件语句、循环和函数是控制程序流程的核心要素,它们使程序能够做出智能判断、高效执行重复任务,并以模块化的方式组织代码。掌握这些概念后,你已经具备了编写基本ObjectSense程序的能力。