vim - 在 vim 中评估字符串真实性的最常用方法
问题描述
在 python 中查看字符串是否为非空,我将执行以下操作:
if STRING_VAR:
...
但是,在 vim 中,直接使用字符串并不能真正给出真正的真值。是否有建议的方法来评估字符串的真实性?通常我会使用:
if (STRING_VAR != "")
...
或者:
if (len(STRING_VAR) != 0)
...
建议/最干净的方法是什么?
解决方案
我会做!empty(STRING_VAR)
*
我还没有看过 Vim 如何比较字符串。但是记住 Vim 是用 C 编写的,那么如果它以类似的方式
int string_compare(const char* s1, const char* s2)
{
while(*s1 && (*s1 == *s2)) {
++s1;
++s2;
}
return *s1 == *s2;
}
那么STRING_VAR != ""
肯定比len(STRING_VAR) != 0
前者的时间复杂度是 O(1) - 结果是在比较第一个字符之后。后者需要 O(n) - 用于计算长度。
另一方面,如果 Vim 中的字符串由结构表示,例如
struct string {
char str[1000];
int len;
};
那么len(STRING_VAR) != 0
将只是简单的整数比较(var.len != 0
)。
其实,len(STRING_VAR)
就够了。
* 由于我们宁愿相信 Bram,他empty()
以最有效的方式实施
在 Vim 中,就像在 Python 中一样,if
不需要括号
推荐阅读
- object - 在Detectron 2中,我如何获得检测到的对象类名称和边界框x,y坐标
- ios - 如何从 Firestore 文档中获取所有子集合?
- android - 如何使用 EditText 在列表视图中搜索联系人?
- reactjs - React.useState 作为道具或属性的反应不同?
- spring - Spring RestTemplate 禁用 SSL 证书验证
- angular - api调用空表
- c# - 无法使用 iv 作为纯文本 AES 解密
- postgresql - 如何使用 Docker 运行 PostgreSQL
- centreon-api - Centreon 插件 Commvault Commserve API UNKNOWN 状态
- compiler-construction - Yacc 打印一个与指定变量不同的联合变量