Применить `&` к логическому массиву - PullRequest
0 голосов
/ 24 мая 2018

У меня есть массив логических значений, и я хочу получить логические и всех элементов.Какой самый эффективный способ сделать это?

Я пытался

&([true,false,false]...)

, но выдает ошибку:

syntax: malformed expression

Удивительно (по крайней мере для меня)следующее выражение

|([true,false,false]...)

оценивается как true.Так как мне это сделать?Прямо сейчас я использую кучу неимущих, чтобы сделать это, но это очень неудовлетворительно.

Кроме того, это на самом деле лучше, чем просто цикл по всем элементам?

1 Ответ

0 голосов
/ 25 мая 2018

Скорее всего, такое поведение & вызвано устаревшей функциональностью ccall, где & использовалось перед переменной.Как объяснено в комментариях выше:

  • вы можете заключить & в скобки, чтобы заставить его работать как положено (&)([true,false,false]...);однако, это неэффективно, так как вы используете splat переданный аргумент;
  • , если все ваши аргументы Boll, тогда all функция является рекомендуемым способом выполнения логических и ;
  • если вам нужно поразрядно и , тогда reduce(&, [true,false,false]) - хорошее решение, как указано phg .
...