Re: return1, return2
От: diez_p  
Дата: 22.01.24 14:59
Оценка:
Здравствуйте, Hоmunculus, Вы писали:

H>Исторически сложилось, что функция возвращает одно значение. В return.

H>Да, разумеется я знаю по ссылочные аргументы, про in/out аргументы и прочее изменение входных параметров. Но! Return все равно один.
H>То есть если рассматривать функцию как черный ящик, то выход у этого ящика всегда один.

H>Почему не придумали типа такого?


H>

H>int/string/int*   MyFunc()
H>{
H>   int res1 = 5;
H>   string res2 = “ssssss”;
H>   int* res3 = (int*)malloc…;

H>   return1 res1;
H>   return2 res2;
H>   return3 res3;
H>}

H>Print(MyFunc()2);

H>int b = MyFunc()1 + 6;


H>


в go можно вернуть несколько значений https://gobyexample.com/multiple-return-values
и в javascript https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment

в шарпах ref/out, а вот в java видимо придется делать обертку, но JIT должен это по идее заоптимизировать, т.к. непонятно как вернуть несколько параметров по значению, т.к. что ссылки, что примитивы возвращаются через копирование.
Отредактировано 22.01.2024 15:05 diez_p . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.