我熟悉像这样的三元条件运算符中的多个条件:

( condition A ? value A :
  ( condition B ? value B :
    ( condition C ? value C :
       ...
    )
  )
)


但是我不明白下面的代码是如何工作的(函数假定返回一个整数:

return (co1.Nr() < co2.Nr() ? -1 :
         ( co1.Nr() == co2.Nr() ? (co1.Id() < co2.Id() ? -1 :
          (co1.Id() == co2.Id() ? 0 : 1)) : 1;


你能解释一下吗?

最佳答案

打破它并理解。例如:考虑第一部分。

return (co1.Nr() < co2.Nr() ? -1 : (all_other_codes);


如果条件co1.Nr() < co2.Nr()为true,则否定为-1,否则执行all_other_codes。其中,all_other_codes返回另一个integer

现在来看all_other_codes

 ( co1.Nr() == co2.Nr() ? (co1.Id() < co2.Id() ? -1 :
          (co1.Id() == co2.Id() ? 0 : 1)) : 1;


如果co1.Nr() == co2.Nr()为true,则返回的值

(co1.Id() < co2.Id() ? -1 :
              (co1.Id() == co2.Id() ? 0 : 1))


否则返回1

关于java - 多条件运算符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33110148/

10-13 05:04