blockquote>
+
для следующего брата. Есть ли эквивалент для предыдущего брата?Вы можете использовать два селектора ax :
!
и?
Там 2 следующие селекторные функции для сиблинга в обычном CSS:
+
является непосредственным последующим селектором сиблинга~
является любым последующим селектором сиблинга. В обычном CSS нет предыдущего селектора sibling.
Однако в ax CSS послепроцессорной библиотеки есть 2 предыдущие селекторные функции:
?
- это предыдущий селектор немедленного (напротив+
)!
является любым предыдущим селектором (см.~
)Рабочий пример:
В следующем примере:
.any-subsequent:hover ~ div
выбирает любой последующийdiv
.immediate-subsequent:hover + div
выбирает немедленный последующийdiv
.any-previous:hover ! div
выбирает любой предыдущийdiv
.immediate-previous:hover ? div
выбирает непосредственный предыдущийdiv
div { display: inline-block; width: 60px; height: 100px; color: rgb(255, 255, 255); background-color: rgb(255, 0, 0); text-align: center; vertical-align: top; cursor: pointer; opacity: 0; transition: opacity 0.6s ease-out; } code { display: block; margin: 4px; font-size: 24px; line-height: 24px; background-color: rgba(0, 0, 0, 0.5); } div:nth-of-type(-n+4) { background-color: rgb(0, 0, 255); } div:nth-of-type(n+3):nth-of-type(-n+6) { opacity: 1; } .any-subsequent:hover ~ div, .immediate-subsequent:hover + div, .any-previous:hover ! div, .immediate-previous:hover ? div { opacity: 1; }
<h2>Hover over any of the blocks below</h2> <div></div> <div></div> <div class="immediate-previous">Hover for <code>?</code> selector</div> <div class="any-previous">Hover for <code>!</code> selector</div> <div class="any-subsequent">Hover for <code>~</code> selector</div> <div class="immediate-subsequent">Hover for <code>+</code> selector</div> <div></div> <div></div> <script src="https://rouninmedia.github.io/axe/axe.js"></script>
Распаковка кортежей работает.
(element,) = myset
(Кстати, python-dev исследовал, но отклонил добавление myset.get ()
для возврата произвольного элемента из Обсуждение здесь , Гвидо ван Россум отвечает 1 и 2 .)
Мой личный фаворит для получения произвольного элемента - (когда у вас есть неизвестный номер, но также работает, если у вас есть только один):
element = next(iter(myset)) ¹
1 : в Python 2.5 и ранее вам нужно использовать iter (myset) .next ()
Существует также Расширенная Повторяемая Распаковка , который будет работать над одноэлементным набором, или mulit-элемент установил
element, *_ = myset
Хотя некоторая щетина при использовании одноразовой переменной.
вы можете использовать element = tuple (myset) [0]
, что немного более эффективно, или вы можете сделать что-то вроде
element = iter(myset).next()
Я думаю, построив итератор более эффективно, чем создание кортежа / списка.
Рассмотрим Erlang:
Вам нужна песочница / DSL: вы можете написать «генераторы парсеров» для очистки доступ к критическим / уязвимым системным вызовам. Стандартный компилятор можно «легко» улучшить с помощью этой функциональности.
Вам необходимо детальное планирование: у вас есть некоторый контроль над этим, также при условии, что вы запускаете каждого «пользователя» в отдельных эмуляторах. Может, у тебя получится лучше, но мне придется копать больше. Помните, что планирование - O (1): -)
Вам необходимо разделение ресурсов между вашими «игроками» (я полагаю, если я правильно понял): Erlang не имеет общего состояния, так что это помогает с самого начала. Вы можете легко создать несколько супервизоров, которые будут следить за потреблением ресурсов игроками и т. Д. распаковка явно выигрывает над обоими:
$ python2.6 -mtimeit -s'x=set([1])' 'a,=x'
10000000 loops, best of 3: 0.174 usec per loop
$ python2.6 -mtimeit -s'x=set([1])' 'a,=x'
10000000 loops, best of 3: 0.174 usec per loop
Это, конечно, для наборов из одного элемента (где последняя форма, как упоминалось другими, имеет то преимущество, что быстро дает сбой, если набор, который, как вы «знали», имел только один элемент, на самом деле имел несколько ). Для наборов с произвольным N> 1 элементов кортеж замедляется, iter - нет:
$ python2.6 -mtimeit -s'x=set(range(99))' 'a=next(iter(x))'
1000000 loops, best of 3: 0.417 usec per loop
$ python2.6 -mtimeit -s'x=set(range(99))' 'a=tuple(x)[0]'
100000 loops, best of 3: 3.12 usec per loop
Итак, распаковка для одноэлементного случая и next (iter (x))
для общего случая, кажется лучшим.