C++三元条件运算符 ?:
一个三元运算符(也称为条件运算符)的使用,它用于根据条件选择两个表达式中的一个。这个三元运算符的格式如下:
condition ? expression_if_true : expression_if_false
以上整个表达式为一个整体:
如果condition为真(true),则整个表达式结果为expression_if_true的值;如果condition为假(false),则结果为expression_if_false的值。
具体下面一个复杂的代码:
Ratio product = mesh.settings.get<Ratio>("wall_0_material_flow") *
((layer_nr == 0) ? mesh.settings.get<Ratio>("material_flow_layer_0") : Ratio(1.0))
其中的三元表达式为:
((layer_nr == 0) ? mesh.settings.get<Ratio>("material_flow_layer_0") : Ratio(1.0))
-
mesh.settings.get<Ratio>("wall_0_material_flow"):调用mesh.settings的get方法,获取名为"wall_0_material_flow"的设置项的值,并将其转换为Ratio类型。这可能表示打印第一层外壁时的材料流速。 -
(layer_nr == 0):这是三元运算符的条件部分,检查当前层索引layer_nr是否等于0,即是否是第一层。 -
如果条件为真(即
layer_nr等于0):mesh.settings.get<Ratio>("material_flow_layer_0"):获取名为"material_flow_layer_0"的设置项的值,这可能表示第一层的特殊材料流速设置。
-
如果条件为假(即
layer_nr不等于0):Ratio(1.0):创建一个Ratio类型的实例,其值为1.0,表示其他层使用默认的材料流速。
-
最终,这个表达式的结果将是一个
Ratio类型的值,它是"wall_0_material_flow"的值与根据层号决定的特定流速调整因子的乘积。
这个表达式通常用于根据是否是第一层来调整材料流速,以便在打印过程的初始层使用不同的打印设置,这有助于提高打印质量和表面光滑度。