为什么C++不支持基于动态数组循环的范围?就是这样的:
int* array = new int[len];
for[] (int i : array) {};
Run Code Online (Sandbox Code Playgroud)
我刚刚发明了for[]与韵new[]和韵的说法delete[].据我所知,运行时具有可用数组的大小(否则delete[]无法工作),因此理论上,基于for循环的范围也可以使用.它不起作用的原因是什么?
如何=(list)在参数中间使用 -style 过程替换?
这有效:
% echo =(echo)
/tmp/zshxxxxxx
Run Code Online (Sandbox Code Playgroud)
这也是如此:
% echo =(echo):works
/tmp/zshxxxxxx:works
Run Code Online (Sandbox Code Playgroud)
但这并不:
% echo broken:=(echo)
zsh: missing end of string
Run Code Online (Sandbox Code Playgroud)
值得注意的是,这也有效:
% echo works:<(echo)
works:/proc/self/fd/11
Run Code Online (Sandbox Code Playgroud)
问题是=(list)只能站在争论的开始。引用ZSH手册:
表达式前面或后面可以有其他字符串,但为了防止与常见的字符串和模式发生冲突,最后一个形式 [this is =(list)] 必须出现在命令参数的开头,并且这些形式仅展开当第一次解析命令或赋值参数时。
我有一个接受 形式参数的工具format:filename,并且我需要使用真实文件,而不是管道,所以我无法使用<(list). 什么是相当简单且可读的解决方案?