Size: a a a

2020 August 02

O

Ofee in supapro.cxx
Егор
это ж с++20
Что есть...
источник

D

Dmitriy in supapro.cxx
Захар Виноградов
Спасибо! Только теперь момент с выводом не работает(
Выводом чего?
источник

ЗВ

Захар Виноградов... in supapro.cxx
Ну этот цикл с авто
источник

Е

Егор in supapro.cxx
Захар Виноградов
Ну этот цикл с авто
у него нет цикла в коде
источник

EK

Eugene Krasnikov (ᴊɪ... in supapro.cxx
Aidar Fattakhov
у тебя предвзятое отношение
Может быть, но ведь это будет выглядеть как-то так?

tl::expected<image,fail_reason> get_cute_cat (const image& img) {
   return crop_to_cat(img)
          .and_then([](const image& img){
            // code
          })
          .and_then([](...) {
            // code
          })
          .map([](const ...) {
            // code
          })
          .map([](const ...) {
            // code
          });
источник

AF

Aidar Fattakhov in supapro.cxx
Eugene Krasnikov (ᴊɪɴ x)
Может быть, но ведь это будет выглядеть как-то так?

tl::expected<image,fail_reason> get_cute_cat (const image& img) {
   return crop_to_cat(img)
          .and_then([](const image& img){
            // code
          })
          .and_then([](...) {
            // code
          })
          .map([](const ...) {
            // code
          })
          .map([](const ...) {
            // code
          });
ну напиши так и будет выглядеть так
источник

ЗВ

Захар Виноградов... in supapro.cxx
Егор
у него нет цикла в коде
Ну, этот for( auto....
источник

EK

Eugene Krasnikov (ᴊɪ... in supapro.cxx
Aidar Fattakhov
ну напиши так и будет выглядеть так
Ну а как ещё, если я не хочу выносить каждый этап в отдельную функцию?
источник

Е

Егор in supapro.cxx
Захар Виноградов
Ну, этот for( auto....
где auto [x,y]? Грубо говоря это сахар, чтоб не писать it->x it->y, у него в коде x\y приватные члены, там так не выйдет.
Можешь какую-то функцию дописать для вывода
источник

ЗВ

Захар Виноградов... in supapro.cxx
Ну вот этот момент выдает ошибку
источник

AF

Aidar Fattakhov in supapro.cxx
Eugene Krasnikov (ᴊɪɴ x)
Может быть, но ведь это будет выглядеть как-то так?

tl::expected<image,fail_reason> get_cute_cat (const image& img) {
   return crop_to_cat(img)
          .and_then([](const image& img){
            // code
          })
          .and_then([](...) {
            // code
          })
          .map([](const ...) {
            // code
          })
          .map([](const ...) {
            // code
          });
а в расте ты бы как сделал?
источник

Е

Егор in supapro.cxx
Захар Виноградов
Ну вот этот момент выдает ошибку
И правильно делает, допиши функцию print в классы, которая будет выводить x y, и вызывай ее в цикле
источник

EK

Eugene Krasnikov (ᴊɪ... in supapro.cxx
Aidar Fattakhov
а в расте ты бы как сделал?
Ну в расте немного компактнее всё же :)
Пример из статьи:

fn file_double<P: AsRef<Path>>(file_path: P) -> Result<i32, String> {
   File::open(file_path)
        .map_err(|err| err.to_string())
        .and_then(|mut file| {
             let mut contents = String::new();
             file.read_to_string(&mut contents)
                 .map_err(|err| err.to_string())
                 .map(|_| contents)
        })
        .and_then(|contents| {
             contents.trim().parse::<i32>()
                     .map_err(|err| err.to_string())
        })
        .map(|n| 2 * n)
}

Не надо, по крайней мере, прописывать тип параметра каждый раз :))
Но в целом да, похоже.
источник

AF

Aidar Fattakhov in supapro.cxx
Eugene Krasnikov (ᴊɪɴ x)
Ну в расте немного компактнее всё же :)
Пример из статьи:

fn file_double<P: AsRef<Path>>(file_path: P) -> Result<i32, String> {
   File::open(file_path)
        .map_err(|err| err.to_string())
        .and_then(|mut file| {
             let mut contents = String::new();
             file.read_to_string(&mut contents)
                 .map_err(|err| err.to_string())
                 .map(|_| contents)
        })
        .and_then(|contents| {
             contents.trim().parse::<i32>()
                     .map_err(|err| err.to_string())
        })
        .map(|n| 2 * n)
}

Не надо, по крайней мере, прописывать тип параметра каждый раз :))
Но в целом да, похоже.
тип параметра  и так не надо прописывать
источник

AF

Aidar Fattakhov in supapro.cxx
пиши auto&&
источник

AF

Aidar Fattakhov in supapro.cxx
не понимаю зачем тут эти монадические конструкции, если вместо них должно быть if() return
источник

EK

Eugene Krasnikov (ᴊɪ... in supapro.cxx
Понял, спасибо :)
источник

AF

Aidar Fattakhov in supapro.cxx
Aidar Fattakhov
не понимаю зачем тут эти монадические конструкции, если вместо них должно быть if() return
видно я слишком стар для таких фетишей
источник

EK

Eugene Krasnikov (ᴊɪ... in supapro.cxx
Aidar Fattakhov
не понимаю зачем тут эти монадические конструкции, если вместо них должно быть if() return
Ну это надо в функцию оборачивать тогда :)
В принципе, не проблема, да.

 auto result = [&]() -> std::optional<int> {
   pre_code1();
   if (!code1()) { return {}; }
   pre_code2();
   if (!code2()) { return {}; }
   pre_code3();
   if (!code3()) { return {}; }
   return get();
 }();
 if (result) {
   // success code
 } else {
   // fail code
 }
источник

AF

Aidar Fattakhov in supapro.cxx
да конечно, декомпозиция важна
источник