Home > other >  Inline if else?
Inline if else?

Time:06-01

Here is part of code. I need to understand what this code do :

if instruction == "JOINT" or instruction == "ROOT":
    parent = joint_stack[-1] if instruction == "JOINT" else None
    joint = BvhJoint(words[1], parent)
    self.joints[joint.name] = joint

How to understand this line special ->

    parent = joint_stack[-1] if instruction == "JOINT" else None

Is this code equal with JS code:

if (instruction == "JOINT") {
    parent = joint_stack[-1];
} else {

}

?

CodePudding user response:

The equivalent JS code would be:

   if (instruction == "JOINT") { 
        parent = joint_stack[-1];
    } else {
        parent = null;
    }

or more idiomatically:

    parent = instruction == "JOINT" ? joint_stack[-1] : null;

This ternary expression in Python:

joint_stack[-1] if instruction == "JOINT" else None

is the same as the JS ternary expression:

instruction == "JOINT" ? joint_stack[-1] : null

CodePudding user response:

 parent = joint_stack[-1] if instruction == "JOINT" else None

This will check the “instruction” is equal to “JOINT” if yes, last value of joint_stack array will be assigned to the parent, otherwise None

CodePudding user response:

The JS equivalent would be

const parent = (instruction === "JOINT")?joint_stack[-1]:null;

The shortcut to conditional expression was added to Python 2.5. See Does Python have a ternary conditional operator?

  • Related