有没有办法让&&&表现为可以将操作连接到一个代码块的运算符?
在编码时我想到了这一点,并想知道我是否可以以某种方式实现它。
我想要实现的是使代码更简洁。 例如:
for (i=0;i<n;++i)
arr[i][0]+=2; &&& arr[i][1]+=3; &&& arr[i][2]=45;
我不想听到如何使用额外的for循环或使用{}代替。
我想知道在ruby中是否可以使用c ++,javascript或(如果不是其中之一)这样的运算符
编辑:我知道这是一件坏事,但我想知道是否有可能完成。 我虽然这是在编码时获得乐趣的重点。答案 0 :(得分:6)
好吧,&&&
被列为&&
,后跟&
,因此您可以使用指针重载&&
运算符:
struct X
{
int x;
X& operator=(int i)
{
x = i;
return *this;
}
X& operator+=(int i)
{
x += i;
return *this;
}
X& operator&&(X*)
{
return *this;
}
};
不幸的是,运算符优先级会受到阻碍,因此您必须将赋值括起来:
int main()
{
const int n = 10;
X arr[n][3];
for (int i = 0; i < n; ++i)
{
(arr[i][0]+=2) &&& (arr[i][1]+=3) &&& (arr[i][2]=45);
}
}
(但当然,在他们正确的思想中,没有人会在生产代码中使用这样的可憎之类。)
答案 1 :(得分:5)
您可以改为使用,
运算符:
arr[i][0]+=2, arr[i][1]+=3, arr[i][2]=45;
但这是一种非常丑陋的编码方式(您的提案也是如此)。引入一个块并将每个块作为单独的语句将更容易阅读。
答案 2 :(得分:1)
它不是语言定义的一部分,所以不 - 你不能随意定义新的语法 - 这将是不同的语言。你可以创建一个预处理器或翻译器来将你的新语言转换为有效的C ++,但我几乎看不出它本身会起什么作用。