目录
学脚本一般都要求会函数,适合使用函数可以提高效率。
一、关于函数的说明
当我们不断地用到 用一条或几条语句时,为了能让它复用,所以我们一般建议写成函数的方式,即做成一个“小工具”,当下次用到的时候,直接使用就行,不用每次都从头再写。
这样的好处是:
- 提高程序开发的效率
- 提高代码的重用性
- 方便维护:你想下如果有上百处都使用那个语句,如果要修改一下,那得修改上百处,但是你用函数的话,你只需要修改一处其它的会跟着改变。
- 变得更简短而清晰
PS:我们还会把大部分功能相同,但是可能里面内容做了修改 ,如果可以的话也把它提取函数,以传参的方式。
二、ros中的函数
2.1 ros函数说明
ros脚本语言不允许直接创建函数,但是您可以使用:parse命令作为解决方法。(v6.2版本开始不推荐这种,所以不讲了,现在都v6.47版本了)
从v6.2开始,添加了新语法,以更轻松地定义此类功能甚至传递参数。 也可以使用:return命令返回功能值。
格式一般为:
# 无参函数定义,如果是全局的那个整个ros都生效,
# 如果是局部函数,那么只有局部有效,和在前面讲的变量是一样的
<:global或:local> <函数名> do={ 语句 }
# 无参 函数调用格式
$函数名
# 有参数函数定义,<>表示必填写,[]表示可选 /表示或
<:global或:local> <函数名> do={ \
:return <可含表达式或值>}
# 有参函数调用
$函数名 变量名1=值1 变更名2=值2 变更名n=值n
ros中所谓的有参函数可以粗暴地理解成,函数含有return的,里面变量取值“$变量名”就是所谓的“参数”。
PS:其实学过编程的都知道,return就是表示调用这个函数,会有一个结果返回,如果没有return则不返回任何结果。
return返回值会很有用,尤其在我们使用ros api操作的时候,返回东西要用return,如果用put命令是返回不了任何东西的,ros api我将会在后面讲基于python的操作。
2.2 例子
我们经常要用到查询某个用户是在线时间,比如查p11
#查看p11
:put [/ppp active get [find name=p11] value-name=uptime ]
我们有可能以后会查任何一个用户,比如p12,可以写成
:put [/ppp active get [find name=p12] value-name=uptime ]
你会发现做了名字不同,功能是相似的的,所以我们可以写成有参的,我们把用户部分以变量的方式传入即可,我这里我直接用命令行写了
[hua@MikroTik] > :global getUserUptime do={ return [/ppp active get [find name=$user] value-name=uptime] }
[hua@MikroTik] > :put [$getUserUptime user=p11]
03:19:07