Re[2]: А можно в if объявить переменную и сразу её проверить?
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 31.08.22 16:40
Оценка: +9 -2
Здравствуйте, reversecode, Вы писали:

R>можно в с++20

R>открой уже учебник и прочитай

А можно не писать такие ответы?
Маньяк Робокряк колесит по городу
Re: А можно в if объявить переменную и сразу её проверить?
От: DiPaolo Россия  
Дата: 31.08.22 16:43
Оценка: 23 (5) +2
Начиная с C++17 можно так:

if (size_t idx = findIdx(); idx != -1)
{
    // Делаем что-то с найденым idx
}
Патриот здравого смысла
Re[3]: А можно в if объявить переменную и сразу её проверить?
От: kov_serg Россия  
Дата: 01.09.22 13:28
Оценка: -5 :))
Здравствуйте, denis.st, Вы писали:

_>>Чем это лучше чем это?

DS>лаконичностью и читаемостью

С++ это не про лаконичность и тем более не про читаемость.
Re: А можно в if объявить переменную и сразу её проверить?
От: Kernan Ниоткуда https://rsdn.ru/forum/flame.politics/
Дата: 31.08.22 20:30
Оценка: +1 -5
Здравствуйте, Marty, Вы писали:

M>Не подскажете?

Открыть учебник по 17 плюсам или посмотреть на cppref про if.
Sic luceat lux!
Re[2]: А можно в if объявить переменную и сразу её проверить?
От: DiPaolo Россия  
Дата: 01.09.22 01:12
Оценка: +4
M>>
if (( size_t idx = findIdx())!=-1)
M>>{
M>>    // Делаем что-то с найденым idx
M>>}
M>>


_>Чем это лучше чем это?

_>
_>{ 
_>  ptrdiff_t idx=findIdx();
_>  if (idx!=-1) {
_>  } else {
_>  }
_>}
_>

M>>Не подскажете?

Не вводится дополнительная переменная в область видимости внешней функции. Всегда имеет смысл сокращать область видимости переменных, чтобы не вносить дополнительную сложность.
Патриот здравого смысла
Re[5]: А можно в if объявить переменную и сразу её проверить?
От: mike_rs Россия  
Дата: 01.09.22 09:14
Оценка: 1 (1) -2
Здравствуйте, Doom100500, Вы писали:

D>Ужасный костыль, который получит много WTF на code review.


Ага, а за конструкцию "if (size_t idx = findIdx(); idx != -1)" на ревью получишь аплодисменты стоя?
Re: А можно в if объявить переменную и сразу её проверить?
От: reversecode google
Дата: 31.08.22 16:30
Оценка: +1 -2
можно в с++20
открой уже учебник и прочитай
Re[3]: А можно в if объявить переменную и сразу её проверить?
От: kov_serg Россия  
Дата: 01.09.22 06:12
Оценка: -2 :)
Здравствуйте, Marty, Вы писали:

M>Хотелось что-то типа:

M>
M>if (auto c1=get1(); c1!=-1)
M>{
M>}
M>else if (auto c2=get2(); c2!=-1)
M>{
M>}
M>//...
M>


Чем так плохо?
{ auto c1=get1(); if (c1!=1) {
  }
  else { auto c2=get2(); if (c2!=1) {
  }}
}
Re[6]: А можно в if объявить переменную и сразу её проверить
От: Doom100500 Израиль  
Дата: 01.09.22 10:16
Оценка: +3
Здравствуйте, mike_rs, Вы писали:

_>Здравствуйте, Doom100500, Вы писали:


D>>Ужасный костыль, который получит много WTF на code review.


_>Ага, а за конструкцию "if (size_t idx = findIdx(); idx != -1)" на ревью получишь аплодисменты стоя?


Понятная и лаконичная конструкция без подсчёта фигурных скогок и осмысливания их. Используется, в том числе, и в других языках:

if err := someOperation; err != nil {
   return nil, err
}
Спасибо за внимание
Отредактировано 01.09.2022 10:17 Doom100500 . Предыдущая версия .
Re[2]: А можно в if объявить переменную и сразу её проверить?
От: Ip Man Китай  
Дата: 02.09.22 03:27
Оценка: 1 (1)
Здравствуйте, reversecode, Вы писали:

R>можно в с++20

R>открой уже учебник и прочитай

а что ты так разговариваешь? Человек нормально вопрос задал.
Re[2]: А можно в if объявить переменную и сразу её проверить?
От: binks Россия  
Дата: 02.09.22 04:35
Оценка: 1 (1)
Здравствуйте, Kernan, Вы писали:

K>Открыть учебник по 17 плюсам или посмотреть на cppref про if.

Не у всех же 17
Re[4]: А можно в if объявить переменную и сразу её проверить?
От: Doom100500 Израиль  
Дата: 01.09.22 06:59
Оценка: +1
Здравствуйте, kov_serg, Вы писали:

_>Чем так плохо?

_>
_>{ auto c1=get1(); if (c1!=1) {
_>  }
_>  else { auto c2=get2(); if (c2!=1) {
_>  }}
_>}
_>


Ужасный костыль, который получит много WTF на code review.
Спасибо за внимание
Re[4]: А можно в if объявить переменную и сразу её проверить?
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 02.09.22 23:03
Оценка: :)
Здравствуйте, Pzz, Вы писали:

Pzz>Пиши на Go уже:

Pzz>
Pzz>if c1 := get1(); c1 != -1 {
Pzz>    ...
Pzz>} else if c2 := get2(); c2 != -1 {
Pzz>    ...
Pzz>}
Pzz>


В принципе, я могу и транспилятор с Го в плюсики сделать, если подожмёт, так-то Но вопрос не про то был

ЗЫ Ты вроде в касперского недавно пришел, и кидал явки/пароли, куда резюме кидать, но я не нашел (ну не особо и искал). Не продублируешь? Мне вроде понравилось, интересно, но тогда был занят
Маньяк Робокряк колесит по городу
А можно в if объявить переменную и сразу её проверить?
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 31.08.22 16:28
Оценка:
Здравствуйте!

Хочу типа такого:

if (( size_t idx = findIdx())!=-1)
{
    // Делаем что-то с найденым idx
}


Если так написать — не компилится, а если убрать скобки, то idx будет не результатом функции, а результатом сравнения результата функции и -1.

Не подскажете?
Маньяк Робокряк колесит по городу
Re: А можно в if объявить переменную и сразу её проверить?
От: kov_serg Россия  
Дата: 31.08.22 18:59
Оценка:
Здравствуйте, Marty, Вы писали:

M>Хочу типа такого:

Зачем?

M>
if (( size_t idx = findIdx())!=-1)
M>{
M>    // Делаем что-то с найденым idx
M>}
M>


Чем это лучше чем это?
{ 
  ptrdiff_t idx=findIdx();
  if (idx!=-1) {
  } else {
  }
}

M>Не подскажете?
Re[2]: А можно в if объявить переменную и сразу её проверить?
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 31.08.22 21:07
Оценка:
Здравствуйте, kov_serg, Вы писали:

_>Чем это лучше чем это?

_>
_>{ 
_>  ptrdiff_t idx=findIdx();
_>  if (idx!=-1) {
_>  } else {
_>  }
_>}
_>

M>>Не подскажете?


Хотелось что-то типа:
if (auto c1=get1(); c1!=-1)
{
}
else if (auto c2=get2(); c2!=-1)
{
}
//...
Маньяк Робокряк колесит по городу
Re[2]: А можно в if объявить переменную и сразу её проверить?
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 31.08.22 21:09
Оценка:
Здравствуйте, Kernan, Вы писали:

M>>Не подскажете?

K>Открыть учебник по 17 плюсам или посмотреть на cppref про if.

Спасибо (на самом деле нет)
Маньяк Робокряк колесит по городу
Re[4]: А можно в if объявить переменную и сразу её проверить?
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 01.09.22 09:56
Оценка:
Здравствуйте, kov_serg, Вы писали:

_>Чем так плохо?

_>
_>{ auto c1=get1(); if (c1!=1) {
_>  }
_>  else { auto c2=get2(); if (c2!=1) {
_>  }}
_>}
_>



А еще else if как добавить? Я просто не написал его, думал идея будет понятна
Маньяк Робокряк колесит по городу
Re[5]: А можно в if объявить переменную и сразу её проверить?
От: kov_serg Россия  
Дата: 01.09.22 11:32
Оценка:
Здравствуйте, Marty, Вы писали:

M>А еще else if как добавить? Я просто не написал его, думал идея будет понятна

Так:
{ 
  auto c1=get1();
  if (c1) {
    auto c2=get2();
    if (c2) {

    } else {

    }
  } else {
    auto c3=get3();
    if (c3) {

    } else {

    }
  }
}
Re[2]: А можно в if объявить переменную и сразу её проверить?
От: denis.st Россия  
Дата: 01.09.22 11:40
Оценка:
_>Чем это лучше чем это?
лаконичностью и читаемостью
Re[6]: А можно в if объявить переменную и сразу её проверить?
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 01.09.22 11:45
Оценка:
Здравствуйте, kov_serg, Вы писали:

M>>А еще else if как добавить? Я просто не написал его, думал идея будет понятна

_>Так:

Ну, чем больше else, тем больше пипецома из скобочек. В общем, я обошел это тем, что все переменные заранее объявил, а присваиваю в if'е. Несколько не то — все переменные видны во всех ветках, но это не большая проблема. Впрочем, можно было и и 17ому способу сделать, было бы именно так, как хочется. Просто я не знал (вернее, знал, но забыл), как в новых плюсах это делается, и 17ые не всегда доступны, хотелось разобраться, можно ли в рамках старых плюсов это как-то сделать
Маньяк Робокряк колесит по городу
Re[6]: А можно в if объявить переменную и сразу её проверить?
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 01.09.22 17:42
Оценка:
Здравствуйте, mike_rs, Вы писали:

D>>Ужасный костыль, который получит много WTF на code review.


_>Ага, а за конструкцию "if (size_t idx = findIdx(); idx != -1)" на ревью получишь аплодисменты стоя?


Нормальная конструкция. Даже если и не знал, что такое есть, аналогия с for сразу очевидна
Маньяк Робокряк колесит по городу
Re[3]: А можно в if объявить переменную и сразу её проверить?
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 02.09.22 10:19
Оценка:
Здравствуйте, Ip Man, Вы писали:

R>>можно в с++20

R>>открой уже учебник и прочитай

IM>а что ты так разговариваешь? Человек нормально вопрос задал.


Я за этим товарищем не в первый раз подобное замечаю, причем, похоже, он именно на меня так реагирует. Похоже, он политикой пропитался, что аж капает
Маньяк Робокряк колесит по городу
Re[3]: А можно в if объявить переменную и сразу её проверить?
От: AeroSun  
Дата: 02.09.22 14:34
Оценка:
Здравствуйте, binks, Вы писали:

B>Не у всех же 17


В смысле? Все компиляторы давно его поддерживают
Re[4]: А можно в if объявить переменную и сразу её проверить?
От: kov_serg Россия  
Дата: 02.09.22 14:48
Оценка:
Здравствуйте, AeroSun, Вы писали:

B>>Не у всех же 17


AS>В смысле? Все компиляторы давно его поддерживают

Для всех микроконтроллеров?
Re[5]: А можно в if объявить переменную и сразу её проверить?
От: DiPaolo Россия  
Дата: 02.09.22 15:25
Оценка:
AS>>В смысле? Все компиляторы давно его поддерживают
_>Для всех микроконтроллеров?

Если ты используешь плюсы для микроконтроллера, то скорее всего компилятор под него будет поддерживать те же 17е плюсы. А если нет (используешь Си) — то тебе это и неактуально.
Патриот здравого смысла
Re[6]: А можно в if объявить переменную и сразу её проверить?
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 02.09.22 15:59
Оценка:
Здравствуйте, DiPaolo, Вы писали:

AS>>>В смысле? Все компиляторы давно его поддерживают

_>>Для всех микроконтроллеров?

DP>Если ты используешь плюсы для микроконтроллера, то скорее всего компилятор под него будет поддерживать те же 17е плюсы. А если нет (используешь Си) — то тебе это и неактуально.


Нет. Например, армовский не поддерживает, только 11ые. Хотя он deprecated, и они пилят новый на шланге, но тем не менее
Маньяк Робокряк колесит по городу
Re[6]: А можно в if объявить переменную и сразу её проверить?
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 02.09.22 16:01
Оценка:
Здравствуйте, DiPaolo, Вы писали:

AS>>>В смысле? Все компиляторы давно его поддерживают

_>>Для всех микроконтроллеров?

DP>Если ты используешь плюсы для микроконтроллера, то скорее всего компилятор под него будет поддерживать те же 17е плюсы. А если нет (используешь Си) — то тебе это и неактуально.


А еще у меня, например, есть проект, я его пилил давно на MSVC2005, и не переехал на новые плюсы. Не развиваю, но немного поддерживаю. Пока желания переезжать на новый компилятор нет
Маньяк Робокряк колесит по городу
Re[3]: А можно в if объявить переменную и сразу её проверить?
От: Pzz Россия https://github.com/alexpevzner
Дата: 02.09.22 19:31
Оценка:
Здравствуйте, Marty, Вы писали:

M>Хотелось что-то типа:

M>
M>if (auto c1=get1(); c1!=-1)
M>{
M>}
M>else if (auto c2=get2(); c2!=-1)
M>{
M>}
M>//...
M>


Пиши на Go уже:
if c1 := get1(); c1 != -1 {
    ...
} else if c2 := get2(); c2 != -1 {
    ...
}
Re[5]: А можно в if объявить переменную и сразу её проверить?
От: Pzz Россия https://github.com/alexpevzner
Дата: 06.09.22 08:12
Оценка:
Здравствуйте, Marty, Вы писали:

M>ЗЫ Ты вроде в касперского недавно пришел, и кидал явки/пароли, куда резюме кидать, но я не нашел (ну не особо и искал). Не продублируешь? Мне вроде понравилось, интересно, но тогда был занят


Касперский большой. Я работаю в той его части, которая ОС делает, а не антивирус. И мы пишем ОС на Си (а не на C++), а самодельные инструменты на Хаскеле

https://careers.kaspersky.ru/

Может, тебе сначала какие-нибудь курсы поиска в Интернете пройти? У меня нет встроенного знания, где на сайте ЛК находится дырка, в которую вставляют резюме, но вот нашел за минуту
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.