The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Выпуск языка программирования Go 1.7, opennews (??), 16-Авг-16, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


53. "Выпуск языка программирования Go 1.7"  +/
Сообщение от Аноним (-), 16-Авг-16, 16:59 
> отсутствия множественных возвращаемых значений

Ты реально думаешь что в C++ нельзя вернуть структуру?

Ответить | Правка | Наверх | Cообщить модератору

55. "Выпуск языка программирования Go 1.7"  +1 +/
Сообщение от Пользователь Debian (?), 16-Авг-16, 17:09 
>> отсутствия множественных возвращаемых значений
> Ты реально думаешь что в C++ нельзя вернуть структуру?

Ты реально думаешь, что из батона нельзя сделать троллейбус?

Ответить | Правка | Наверх | Cообщить модератору

61. "Выпуск языка программирования Go 1.7"  –1 +/
Сообщение от rob pike (?), 16-Авг-16, 17:40 
>  return {20, std::string("baz"), 1.2f};

Это по-вашему троллейбус?

Ответить | Правка | Наверх | Cообщить модератору

66. "Выпуск языка программирования Go 1.7"  +/
Сообщение от Андрей (??), 16-Авг-16, 17:53 
Так не в том проблема. Это возможно, но ведь никто не использует эту прекрасную возможность!
Ответить | Правка | Наверх | Cообщить модератору

77. "Выпуск языка программирования Go 1.7"  –2 +/
Сообщение от rob pike (?), 16-Авг-16, 19:27 
Вы полагаете что у языка Go есть особая уличная магия, которой по странному стечению обстоятельств лишены все остальные языки, не позволяющая программисту на Фортране написать на нём программу на Фортране?
Ответить | Правка | Наверх | Cообщить модератору

85. "Выпуск языка программирования Go 1.7"  +/
Сообщение от Андрей (??), 16-Авг-16, 20:28 
Я полагаю, что хорошими возможностями языка Go программисты пользуются, а С++ - нет.
Ответить | Правка | Наверх | Cообщить модератору

86. "Выпуск языка программирования Go 1.7"  –2 +/
Сообщение от rob pike (?), 16-Авг-16, 20:38 
И вам не кажется это, если бы оно было действительно так, немного странным?

К тому же за пределами первого семестра обучения Паскалю говорить о каких-то априорно "хороших" и "плохих" возможностях сколь нибудь развитых языков было бы изрядным упрощением. Иначе люди начинают пугаться modifyIORef и Войда с подругой его, Звездочкой и писать на любом языке программы на Фортране.

Ответить | Правка | Наверх | Cообщить модератору

70. "Выпуск языка программирования Go 1.7"  +2 +/
Сообщение от Пользователь Debian (?), 16-Авг-16, 18:18 
Это initializer list из C++?

Покажите, пожалуйста, как выглядит деконструкция такого значения, которое вернули из функции, в точке его использования.
Другими словами, если

  return {20, std::string("baz"), 1.2f};

возвращается из фанкции foo(), то я бы хотел увидеть LHS в выражении

  whatever = foo()

Я могу там написать

  int n;
  std::string s;
  float f;
  n, s, f = foo()

?

Ответить | Правка | К родителю #61 | Наверх | Cообщить модератору

72. "Выпуск языка программирования Go 1.7"  –1 +/
Сообщение от Victor (??), 16-Авг-16, 18:45 
>[оверквотинг удален]
> Другими словами, если
>   return {20, std::string("baz"), 1.2f};
> возвращается из фанкции foo(), то я бы хотел увидеть LHS в выражении
>   whatever = foo()
> Я могу там написать
>   int n;
>   std::string s;
>   float f;
>   n, s, f = foo()
> ?

Можно так:

std::tuple<int, std::string, float> foo();

int n;
std::string s;
float foo;

std::tie(n, s, f) = foo();

Начиная с C++17 можно будет писать проще:
auto [n, s, f] = foo();

Ответить | Правка | Наверх | Cообщить модератору

79. "Выпуск языка программирования Go 1.7"  +/
Сообщение от Пользователь Debian (?), 16-Авг-16, 19:38 
Спасибо!
Ответить | Правка | Наверх | Cообщить модератору

76. "Выпуск языка программирования Go 1.7"  –1 +/
Сообщение от rob pike (?), 16-Авг-16, 19:25 
n, s и f придётся взять в скобочки, как в Perl (только неудобней, придется добавить auto).

Можно и std::tie(retval, err) = foo(), особенно - err всё равно переиспользуется постоянно, да и retval обычно какой-нибудь size_t везде один и тот же.

Ответить | Правка | К родителю #70 | Наверх | Cообщить модератору

102. "Выпуск языка программирования Go 1.7"  +1 +/
Сообщение от angra (ok), 17-Авг-16, 09:26 
> Ты реально думаешь что в C++ нельзя вернуть структуру?

Можно, но это не то же самое, что вернуть несколько значений. Более того, использование подобного для возврата ошибки не является общепринятой практикой в С++. Между "возможно" и "удобно" есть достаточно большая разница, чтобы существовало множество ЯП, а не один единственный.


Ответить | Правка | К родителю #53 | Наверх | Cообщить модератору

108. "Выпуск языка программирования Go 1.7"  +/
Сообщение от freehckemail (ok), 17-Авг-16, 11:49 
>> отсутствия множественных возвращаемых значений
> Ты реально думаешь что в C++ нельзя вернуть структуру?

Да не в этом дело. На самом деле оно вот в чём:

> Let's say that need f is called by g. g needs several values from f.
> Without multiple value return, f packs the values in a list (or vector),
> which is passed to g. g then immediately unpacks the list.
>
> With multple values, the values are just pushed on the stack. Thus no
> packing and unpacking is done.
>
> Whether this should be called an optimization hack or not, is up to you.

Ответить | Правка | К родителю #53 | Наверх | Cообщить модератору

115. "Выпуск языка программирования Go 1.7"  +/
Сообщение от Аноним (-), 17-Авг-16, 17:30 
>> отсутствия множественных возвращаемых значений
> Ты реально думаешь что в C++ нельзя вернуть структуру?

Какие-то гарантии, что это в штатном порядке сначала задействует регистры, а только потом костыли с копированием в память?

Ответить | Правка | К родителю #53 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру