Page 1 of 1
Как вернуть из функции несколько значений?
Posted: 2008-09-13 17:13:13
by Millerbeer
Если я хочу, чтобы функция вернула мне несколько параметров, могу я в этой функции запихнуть эти параметры в массив и воткнуть в скрипте команду
, а в вызывающей функции проинициализировать массив и присвоить ему значение вызываемой функции? И если я не могу так сделать, то как мне вернуть членораздельно из функции несколько параметров, что б вызывающая функция знала где чего? Вот...
Posted: 2008-09-13 19:48:34
by Grin
в параметрах передавай массив, он же утебя будет использоватся для результата. Масив в параметрах передаются по ссылке, новый экземпляр не делается.
re
Posted: 2008-09-13 21:39:46
by Millerbeer
А можно уточнить, я правильно понял или нет? Допустим имеется скрипт
Code: Select all
sub MyScript()
dim MyMassiv[3]#инициализируем в вызывающем скрипте массив
MyMassiv=MyFunction(MyMassiv)#присваиваем значения массиву,вызывая функцию, от которой нам #надо получить несколько параметров, передавая ей этот же массив в качестве входного параметра
endsub
# а вот собсно и функция
sub MyFunction(MyMassiv)
MyMassiv[0]=1
MyMassiv[1]=5
MyMassiv[2]=-37 #присваиваем элементам массива значения
Return MyMassiv #возвращаем массив с элементами в качестве выходого параметра
endsub
Posted: 2008-09-13 21:47:08
by Destruction
Posted: 2008-09-13 22:17:27
by Millerbeer
Дестр, мысль интересная, но там все удивляются, в том числе и ты, почему это работает?

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

Несколько путанно, но думаю, понять можно...
Posted: 2008-09-13 22:20:04
by Millerbeer
Posted: 2008-09-13 23:20:54
by Grin
Передается ссылка, нет смысла потом что то возвращать. Изменя массив внутри функции, изменения в реал тайме отрадаются на переданном...
Поповоду клонирования масивов, надо смотреть что в итоге получится
или 1 масив с 2 именами или 2 масива
Posted: 2008-09-14 02:03:44
by Millerbeer
Ага, ага, ясно, наконец-то дошло!

Спасибо, Грин, спасибо, Дестр!
Posted: 2008-09-14 03:40:39
by Millerbeer
А ещё такой вопрос: Может массив состоять из переменных разного типа? Пример:
Code: Select all
Dim Massiv[3]
Massiv[0]=1
Massiv[1]='something'
Massiv[2]=-0.000377
Такой массив в инже корректен?
Posted: 2008-09-14 04:38:37
by Destruction
Корректен.