Почему я должен использовать 'литий' вместо 'отделения'?

Вы можете использовать трюк с руководством по выводу std::function, чтобы вытащить аргументы, но вы действительно не хотите, чтобы действительно создавало a std::function. Вы хотите сложить в лямбда-стране. std::function добавляет накладные расходы и распределение из-за стирания типа - но вы ничего не делаете, так как на самом деле требуются преимущества, которые обеспечивает стирание типа. Это все потеря и нет победы. На самом деле не делайте std::function .

Тем не менее, вам все еще, конечно, нужны аргументы. Таким образом, вы можете сделать это:

template <typename T> struct type { };

template <typename F>
void get(size_t index, F f) {
    using function_type = decltype(std::function(f));
    get_impl(index, f, type<function_type>{});
}

По сути, мы берем некоторые вызываемые - и затем мы выводим std::function из него. Это дает нам некоторый тип. В конкретном примере в OP этот тип std::function<void(comp_a&, comp_b&)>. Затем мы просто перенаправляем этот тип в другую функцию - как пустой объект. Нет накладных расходов. Повторим, мы на самом деле не создаем std::function - мы просто передаем его тип.

Эта другая функция может использовать преимущество знания того, что знает std::function:

template <typename T> using uncvref_t = std::remove_cv_t<std::remove_reference_t<T>>;

template <typename F, typename R, typename... Args>
void get_impl(size_t index, F f, type_t<std::function<R(Args...)>>) {
    f(std::get<uncvref_t<Args>::id>(components)[index] ...);
}

Вам нужно uncvref_t, чтобы обработать случай, когда Args может или не может быть ссылкой или [ 1114] резюме -qualified.

Теперь, это не будет работать для любого вызываемого. Если вы передадите общую лямбду, вывод std::function не удастся. Но тогда ... это не могло сработать, так что это не большая потеря?

110
задан Ambo100 2 January 2017 в 21:37
поделиться

12 ответов

Для семантической правильности. HTML имеет способность выразить списки вещей, и это помогает роботу Google, программы для чтения с экрана и вся манера пользователей, которые не заботятся только о презентации сайта, понимают Ваше содержание лучше.

143
ответ дан Jeremy DeGroot 24 November 2019 в 03:09
поделиться

другая вещь о литии ул.; можно использовать ул. в качестве контейнера, который помогает Вам установить класс

<ul class="myHebe">
  <li><a href="#">.net</a></li>
  <li><a href="#">.net</a></li>
</ul>

Стиля, мне нравится этот шаблон, когда я использую ул.

.myHebe{} // container
.myHebe li {} // items
.myHebe li a {} // subitems

, Конечно, это зависит от того, как мы хотим использовать его и как нам нравится он. Это - способ, которым мне нравится

, Hope помогает Спасибо

0
ответ дан Barbaros Alp 24 November 2019 в 03:09
поделиться

Для рендеринга правильно на примитивных браузерах или мобильных устройствах

2
ответ дан Codingday 24 November 2019 в 03:09
поделиться

Если все, о чем Вы заботитесь, заставляет списки смотреть определенный путь с минимальным усилием, то это уже - легкая задача: <li> один символ меньше для ввода, чем <div> и , его закрывающий тэг является дополнительным в HTML.

И это в дополнение к тому, что все остальные сказали о семантике.

2
ответ дан 24 November 2019 в 03:09
поделиться

Используя <li> (в соответствующих случаях) уменьшает <div> суп тега, который Вы так часто видите в веб-страницах, который выручает разработчиков много.

Не то, чтобы <div> плохи, но каждый раз, когда тег злоупотребляется (как <div> часто), это растворяет семантическое значение тега на грани того, чтобы быть полностью бесполезным. Я недавно изучил это от подрядчика, которого мы наняли для помощи с CSS/UI нашего веб-приложения, и значение, которое это имело к удобочитаемости/пригодности для обслуживания HTML-кода, является очень заметным мне.

2
ответ дан KarstenF 24 November 2019 в 03:09
поделиться

< li> означает объект в списке, и это позволяет синтаксическим анализаторам (браузеры, поисковые системы, пауки) знают, что Вы перечисляете объекты. Можно использовать DIV вместо LI, но те синтаксические анализаторы никогда не знали бы, что те объекты перечисляются, и DIV ничего действительно не описывает за исключением того, что это - блок.

3
ответ дан netrox 24 November 2019 в 03:09
поделиться

Если Вы будете использовать отделение то вместо этого, рысь не сможет представить страницу читаемым способом.

4
ответ дан Joshua 24 November 2019 в 03:09
поделиться

Необходимо использовать соответствующие теги для содержания, которое Вы хотите вставить. Это не только означает, что ул./литий более подходит для списков. Это также означает, что необходимо рассмотреть содержание списка и видеть, перечисляют ли незаказывание/заказывание или определение.

Другой аргумент - это при отключении CSS. Браузер представит, это - моделирование по умолчанию, которое делает более хорошим посмотреть на то, если альтернативные устройства просмотра используются. Это также улучшает доступность.

4
ответ дан TomHastjarjanto 24 November 2019 в 03:09
поделиться

При помощи семантически исправляют разметку, Вы встраиваете дополнительную информацию в свой текст. При помощи ул./лития Вы связываетесь с приложением потребления, что информацией является список и не только "что-то" (кто знает то, что), который является некоторым текстом в произвольном элементе.

17
ответ дан Rex M 24 November 2019 в 03:09
поделиться

Im, не уверенный, почему я должен использовать литий ул. по сравнению с простым использованием отделений при списке объектов. Я могу сделать оба взгляд точно тот же

, Что существует ключевое слово в Вашем вопросе: "посмотреть". Можно ли также сделать их тип то же для слепых людей, использующих читателя Braille? Можно ли сделать их звук то же для слепых людей, использующих синтезатор синтеза речи по тексту? Можете Вы все еще заставляете их выглядеть одинаково для слабовидящих людей, использующих пользовательские клиентские пользовательские таблицы стилей CSS?

, Что слово, "взгляд", является очень опасным word †“при использовании этого относительно HTML все предупреждения должны уйти в голове. HTML является языком для описания семантической структуры документа гиперсреды. Семантическая структура не делает , имеют "взгляд", это - абстрактное понятие.

, Даже если Вы не заботитесь обо всем этом семантическом фокусе-покусе и Вы не заботитесь о слепых людях, рассматриваете это: Google, Yahoo, MSN and Co. не имеет глаз, они не "смотрят" на Ваш представленный CSS.

125
ответ дан Philipp M 24 November 2019 в 03:09
поделиться

Я лично люблю литий за семантику. При просмотре источника Вы сразу видите, что у Вас есть список чего-то, если они перенесены литием. Набор отделения не обеспечивает семантического значения, и обычно единственная семантика к списку представлена классами CSS как "listItem". Который, очевидно, указывает на то, что литий должен был использоваться во-первых.

, Если у Вас есть цикл в Вашей логике представления, я всегда одобряю литий по отделению

3
ответ дан Scott Muc 24 November 2019 в 03:09
поделиться

Прямой ответ на ваш вопрос: Функциональное преимущество состоит в том, что div сами по себе мало что значат, тогда как ul lis явно означает «это неупорядоченный / неупорядоченный список элементов».

Термин «семантика» относится к тому, как вы используете внутреннее значение существующих структур для создания явного значения. HTML состоит из тегов, которые сами по себе означают определенные вещи. И существуют установленные правила / рекомендации / способы их использования, чтобы опубликованный HTML-документ передавал то, что вы хотите, чтобы он значил.

Если вы перечисляете что-то в своем документе, добавьте упорядоченный список (UL) или неупорядоченный список (OL). С другой стороны, элемент разделения страницы (DIV) используется для создания определенного и отдельного фрагмента контента.

Элемент div «делится». Когда вы смотрите на страницу, есть определенные части, такие как тело контента, нижний колонтитул, заголовок, навигация, меню, формы и т. Д. И вы можете использовать теги div для создания этих разделов. Часто части страницы соответствуют визуальному макету, поэтому использование явных разделений страницы (DIV) для разрезания макета в CSS является естественным подходом. Таким образом, теги div становятся структурными.

Неправильное или чрезмерное использование тега div может создать непредусмотренный смысл и раздуть код.

Чтобы запутать ситуацию: Google использует h3 и div , чтобы «разделить» свои перечисленные результаты поиска. ul> li> h3 + div

Поэтому, когда вы отключите все стили (Shift + Cmd / Crtl + S в Firefox с панелью инструментов WebDeveloper), div должны исчезнуть и сложить естественно. Ваш голый HTML должен по-прежнему отображать красивую страницу с четкой иерархией: сверху вниз, сначала наиболее важный контент, а также списки с маркерами и номерами для перечисленных элементов. Также рекомендуется добавить ссылку вверху (для невизуальных пользователей), которая позволит вам перейти к основному контенту, важным формам или основным заголовкам (например, оглавлению).

Наконец, имейте в виду, что вы создаете документ. Без всех визуальных эффектов это все равно должен быть убедительный документ.

13
ответ дан 24 November 2019 в 03:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: