Page 1 of 1

Как вернуть из функции несколько значений?

Posted: 2008-09-13 17:13:13
by Millerbeer
Если я хочу, чтобы функция вернула мне несколько параметров, могу я в этой функции запихнуть эти параметры в массив и воткнуть в скрипте команду

Code: Select all

Return massiv
, а в вызывающей функции проинициализировать массив и присвоить ему значение вызываемой функции? И если я не могу так сделать, то как мне вернуть членораздельно из функции несколько параметров, что б вызывающая функция знала где чего? Вот...

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
Есть такой древний топик..

http://yoko.ultimasoft.ru/viewtopic.php?t=9894

:roll:

Posted: 2008-09-13 22:17:27
by Millerbeer
Дестр, мысль интересная, но там все удивляются, в том числе и ты, почему это работает? :) В общем я понял, чтоб не париться с массивами, если я хочу получить от функции несколько выходных параметров, нужно ввести входной контрольный параметр, а вызываемая функция проверяет, чего ей пихнули на вход, и отдаёт по нему что надо на выход. :lol: Несколько путанно, но думаю, понять можно...

Posted: 2008-09-13 22:20:04
by Millerbeer
полиморфизм ёпт :lol: :lol: :lol:

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
Корректен.