最近我在Python中经常使用
:=
运算符,这样:
if my_object := SomeClass.function_that_returns_object():
# do something with this object if it exists
print(my_object.some_attribute)
问题
有没有办法在c++11中做到这一点而不使用
stdlib
?
例如,在 arduino 草图中,如果我想使用可能返回零的方法,例如:
if(char * data = myFile.readBytes(data, dataLen))
{
// do something
}
else
{
// do something else
}
C++ 中没有直接等同于 Python 海象运算符 (:=) 的东西。海象运算符的主要优势在于它能够在一个表达式中分配一个值,同时还能测试其真实性。
在你的 C++ 代码示例中:
if(char * data = myFile.readBytes(data, dataLen))
{
// do something
}
else
{
// do something else
}
这段代码可以正常工作,因为
if
语句本身已经允许你在条件表达式中进行赋值并检查结果的真实性。
如果你希望避免在
if
条件中进行赋值,你可以将赋值操作放到
if
语句之前:
char * data = myFile.readBytes(data, dataLen);
if(data)
{
// do something
}
else
{
// do something else
}
这种方法更清晰地将赋值和条件检查分开。
总结:C++ 中没有直接等同于 Python 海象运算符的东西,但你可以使用现有的语言结构(例如在
if
条件中赋值)来实现类似的效果。选择哪种方法取决于个人偏好和代码风格。