Сообщение Re: return1, return2 от 22.01.2024 14:59
Изменено 22.01.2024 15:05 diez_p
Re: return1, return2
Здравствуйте, Hоmunculus, Вы писали:
H>Исторически сложилось, что функция возвращает одно значение. В return.
H>Да, разумеется я знаю по ссылочные аргументы, про in/out аргументы и прочее изменение входных параметров. Но! Return все равно один.
H>То есть если рассматривать функцию как черный ящик, то выход у этого ящика всегда один.
H>Почему не придумали типа такого?
H>
в go можно вернуть несколько значений.
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 можно вернуть несколько значений.
Re: return1, return2
Здравствуйте, Hоmunculus, Вы писали:
H>Исторически сложилось, что функция возвращает одно значение. В return.
H>Да, разумеется я знаю по ссылочные аргументы, про in/out аргументы и прочее изменение входных параметров. Но! Return все равно один.
H>То есть если рассматривать функцию как черный ящик, то выход у этого ящика всегда один.
H>Почему не придумали типа такого?
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 должен это по идее заоптимизировать, т.к. непонятно как вернуть несколько параметров по значению, т.к. что ссылки, что примитивы возвращаются через копирование.
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 должен это по идее заоптимизировать, т.к. непонятно как вернуть несколько параметров по значению, т.к. что ссылки, что примитивы возвращаются через копирование.