Ozz*_*zie 5 c++ python arduino c++11 python-3.8
最近我在Python中经常使用:=运算符,如下所示:
if my_object := SomeClass.function_that_returns_object():
# do something with this object if it exists
print(my_object.some_attribute)
Run Code Online (Sandbox Code Playgroud)
有没有办法在 c++11 中不使用 来做到这一点stdlib?例如,在 arduino 草图中,如果我想使用可能返回零的方法,例如:
if(char * data = myFile.readBytes(data, dataLen))
{
// do something
}
else
{
// do something else
}
Run Code Online (Sandbox Code Playgroud)
Python 的:=赋值表达式运算符(又名“海象”运算符)返回赋值的值。
C++ 的=赋值运算符(复制赋值和移动赋值,以及其他赋值运算符)本质上做同样的事情,但以不同的方式。赋值的结果是对被赋值对象的引用,允许在进一步的表达式中计算该对象。
所以,相当于:
if my_object := SomeClass.function_that_returns_object():
# do something with this object if it exists
print(my_object.some_attribute)
Run Code Online (Sandbox Code Playgroud)
就像你展示的那样:
SomeType *object;
if ((my_object = SomeClass.function_that_returns_object())) {
// do something with this object if it exists
print(my_object->some_attribute);
}
Run Code Online (Sandbox Code Playgroud)
如果function_that_returns_object()返回空指针,则if计算结果object为 false,否则计算结果为 true。对于其他类型也可以做同样的事情,例如:
int value;
if ((value = SomeClass.function_that_returns_int()) == 12345) {
// do something with this value if it matches
}
Run Code Online (Sandbox Code Playgroud)