用 def 定义的函数是编译的。执行速度快很多倍,经常10到100倍。
(资料图)
def函数总会在错误时自动abort。
将来会增加类。取代“dict函数”机制。如今呢,需要显式地传递字典。(暂时字典当对象用,vim9的ad.func其实是ad[func],ad.item其实是ad[item])
函数必须指定 参数类型和返回类型。 “any”类型可以被使用,然后类型检查将在运行时完成,就像以前的老式函数一样。There is no "a:" dictionary or "a:000" list。(旧Vim脚本的函数里,需要a:访问函数内变量,a:000表示整个函数的实参列表)
list类型,例如,一个数字列表(有点像C++里的容器模板)
当函数参数是可选的(它有一个缺省值)时传递 `v:none`,导致它使用缺省值
参数“_”(下划线)可用于忽略该参数。
函数和变量默认是script-local 的
在 Vim9 脚本中,该函数是脚本的script-local 函数。就像遗留脚本使用 前缀“s:”描述的。要定义全局函数或变量,“g:”前缀必须使用。
脚本里要被别人导入和在自动载入脚本定义的函数,需要使用"export",才能被别处使用。
局部变量需用 `:var` 定义。局部常量需用 `:final` 或 `:const` 定义。我们把两者都称为 "变量"。
变量可以局部于脚本、函数或代码块
变量只在定义所在的块和嵌套块中可见。块定义结束后,变量不再可访问
变量必须在使用之前进行声明:
简单值有更简短和更快的方法:声明的同时初始化。
Vim9 脚本中不能用 `:let`。已有的变量可直接赋值,不需要任何命令。
全局变量必须带上 "g:" 前缀。
全局函数必须带上 "g:" 前缀
使用 :const
可以同时将变量和其value设置为不可修改,适用于希望确保不会被修改的复合结构。
使用:final
可以将变量设置为不可修改,但是可以更改其value。
const 限制只适用于value本身,而不限制其value引用的value。
可以使用 myList->add(123) 来调用 myList 列表对象的 add 方法,而不需要使用 eval("myList->add(123)")。这种用法可以提高代码的可读性和简洁性。但需要注意,此方法只能在方法名开头是标识符或不能被解释为 Ex 命令时使用。
Lambda表达式 使用=> 而不是 ->
lambda 表达式的参数部分与箭头符号 "=>" 之间不允许换行,以便 Vim 可以区分括号中的表达式和 lambda 表达式。实际例子:
可变参数:使用 "..._",它会让函数接受可变参数。例如:
此外,匿名函数可以包含 {} 包围的多个语句
X 关闭
Copyright © 2015-2022 北冰洋造纸网版权所有 备案号:沪ICP备2020036824号-3 联系邮箱:562 66 29@qq.com