2013-05-30 2 views
-1

Возможно, мне что-то не хватает.Понимание, когда короткие замыкания оператора &&

In R, TRUE && NA evalues ​​to NA. Для меня это не имеет смысла, потому что && должен оценивать слева направо и останавливаться, как только одно из его условий истинно.

+0

Он затрагивал в [ этот ответ] (http://stackoverflow.com/a/1535492/2 88545), но я до сих пор не понимаю * почему * –

+0

см. Http://stackoverflow.com/questions/16844139/na-true-and-false-properties и особенно @joran ответ о двусмысленности 'NA'. – Beasterfield

+4

И требует, чтобы оба условия были истинными, так что будет только короткое замыкание на 'FALSE' – James

ответ

11

Это не имеет смысла для меня, потому что & & следует оценивать слева справа, и остановится, как только один из его условий является истинным.

Это неправильно. Вы путаете && с ||:

  • TRUE && FALSE дает FALSE
    • & & требует оба условия, чтобы быть ИСТИНА
    • && будет короткое замыкание на FALSE
  • TRUE || FALSE дает TRUE
    • || требует одно условие, чтобы быть ИСТИНА
    • || будет короткое замыкание на ИСТИНА

Кроме того,

TRUE || NA 

дает

TRUE 
+1

Вы должны добавить комментарий Джеймса о 'FALSE && ...' возможности короткого замыкания. –