我喜欢用括号括起来的方法参数,这是一些Pascal的怀旧之情.清理代码时,如果我找到没有它的方法参数,我会立即将它们包含在内.今天它导致我的工作代码抛出错误,虽然我的语法看起来没问题根据文档.
Kernel.raise的文档具有以下格式:
(Object) raise(exception[, string [, array]])
Run Code Online (Sandbox Code Playgroud)
这些都有效:
> raise TypeError
TypeError: TypeError
> raise (TypeError)
TypeError: TypeError
> raise "Error message"
RuntimeError: Error message
> raise ("Error message")
RuntimeError: Error message
Run Code Online (Sandbox Code Playgroud)
但是下一个抛出语法错误的封闭版本:
> raise TypeError, "Error message"
TypeError: Error message
> raise (TypeError, "Error message")
SyntaxError: unexpected ')', expecting $end
Run Code Online (Sandbox Code Playgroud)
我可以没有它,我只是想知道为什么这会以错误结束.
paste在Makefile中使用括号时遇到问题.
我正在尝试运行的指令是:
paste -d " " <(cat file1) <(cat file2 | grep "pattern")
Run Code Online (Sandbox Code Playgroud)
如果我从控制台运行它可以正常工作,但是当它放在Makefile中时,括号会导致语法错误:
/bin/sh: -c: line 0: syntax error near unexpected token `('
Run Code Online (Sandbox Code Playgroud)
基本上我需要的是粘贴两个(或更多)文件的内容,但用grep过滤其中一些文件.
我在VBScript中编写这段代码,这在我以前没有用过.
我写了这个:替换(strContent,st,arr(k,i),1)
它给了我一个"在调用Sub时不能使用括号"的问题.有人可以帮忙吗?
我尝试过在线搜索,但没有任何帮助.
谢谢!
我正在编写一个脚本,需要从目录中删除所有内容,除了两个目录,mysql和temp.
我之前问了一个问题,得到的代码在命令行中有效:
rm -rf !(mysql|temp)
Run Code Online (Sandbox Code Playgroud)
但是它在脚本中不起作用.我收到此错误"语法错误:"("意外".
我需要做的括号有什么特别之处吗?
我试图检查这是否等于零
//Address already malloc
void MyCheck (void *Address){
if ( (long)Address & (~(sizeof(long)-1)) != 0 ){
printf("Invalid");
}
}
Run Code Online (Sandbox Code Playgroud)
当试图编译它给我:
Error: suggest parentheses around comparison in operand
of '&' [-Werror=parentheses]
Run Code Online (Sandbox Code Playgroud) 这段代码的括号出现了奇怪的事情:
Setlocal EnableDelayedExpansion
MyFOLDER=
FOR %%B IN (c,d,e,f,g) DO (@%%B: 2>nul && set z=%%B <nul if exist %z%\
(if %MYFOLDER%==[] (echo %z%
)
)
)
Run Code Online (Sandbox Code Playgroud)
以上编译,但这不是:
Setlocal EnableDelayedExpansion
MyFOLDER=
FOR %%B IN (c,d,e,f,g) DO (@%%B: 2>nul && set z=%%B <nul if exist %z%\
(if %MYFOLDER%==[] (
echo %z%
)
)
)
Run Code Online (Sandbox Code Playgroud)
也不是这个
Setlocal EnableDelayedExpansion
MyFOLDER=
FOR %%B IN (c,d,e,f,g) DO (@%%B: 2>nul && set z=%%B <nul if exist %z%\
(if %MYFOLDER%==[]
(
echo %z%
)
)
)
Run Code Online (Sandbox Code Playgroud)
也不是"echo%z%"低于(如果是MYFOLDER)行的任何其他组合."FOR"行中有什么可疑的吗?
我有一个简单的天真问题,我已经弄清楚如何让我的脚本运行,但我想知道为什么它以前没有用.
我使用类似于以下语法的通配符分配变量:
var=$dir/$subj/name*text*text.nii.gz
我可以使用ls $文件调用正确的文件名,但是当我尝试用$ file替换为命令行的输入(使用FSL进行图像处理)时,我得到一个错误,说它无法找到带有通配符的文件地点.
但是,当我用括号分配变量时:
var=($dir/$subj/name*text*text.nii.gz)
它运行得很好.我假设有其他可能更好的方法来做到这一点,但我只是想知道为什么初始变量赋值不起作用,以及以这种方式分配变量的最佳方式是什么.
谢谢!
考虑以下情况,可以(作为示例)用于执行单行交换:
let a = (10,20)
console.log(a)
> 20
Run Code Online (Sandbox Code Playgroud)
执行交换的示例
let a = 1, b = 2
a = b + (b=a, 0)
console.log(a, b)
>2,1
Run Code Online (Sandbox Code Playgroud)
我习惯于看到包含函数声明的括号创建自调用函数,但我不确定在上面的情况下发生了什么.如何(10,20)或被(b=a, 0)javascript对待?它是一个返回最终值的函数,还是一个数据类型,当访问它时总会给出最后一个项或其他什么?
为了澄清,我不是在寻找有关如何执行交换的提示,而是对上述语法的解释.
我在旧平台上使用PHP 5.3中的ImageMagick.我偶然发现了一段代码,这些代码在变量周围使用圆括号时无效,但在删除这些括号时确实有效.变量周围的括号有什么作用?
$im = new imagick();
$im->readImageBlob($photo);
$im->setImageFormat('jpg');
$photo = ($im);
Run Code Online (Sandbox Code Playgroud)
它没有用这段代码读取图像数据,但是当我删除括号时它就这样做了.
$photo = $im;
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
下面是一个简单的例子,有些东西让我烦恼.此处还有一个指向在线c ++编译器的链接,这里有https://ide.geeksforgeeks.org/oxQd8FU2NV
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
template <class T>
void PrintF (const T& printInt) { cout << printInt << " "; }
template <class T>
class PrintClass {
public:
void operator()(T elem) const {
cout << elem << " ";
}
};
int main () {
vector<int> vect;
for (int i=1; i<10; ++i) {
vect.push_back(i);
}
for_each (vect.begin(), vect.end(), PrintClass<int>()); cout << endl;
for_each (vect.begin(), vect.end(), PrintF<int>); cout << endl;
// for_each (vect.begin(), vect.end(), …Run Code Online (Sandbox Code Playgroud)