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

Ask for help

Moderators: Murderator+, Murderator

Post Reply
Millerbeer
Posts: 247
Joined: 2008-09-12 05:07:34

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

Post by Millerbeer »

Если я хочу, чтобы функция вернула мне несколько параметров, могу я в этой функции запихнуть эти параметры в массив и воткнуть в скрипте команду

Code: Select all

Return massiv
, а в вызывающей функции проинициализировать массив и присвоить ему значение вызываемой функции? И если я не могу так сделать, то как мне вернуть членораздельно из функции несколько параметров, что б вызывающая функция знала где чего? Вот...
Grin
Expert!
Posts: 2580
Joined: 2005-05-04 14:05:19
Location: Москва

Post by Grin »

в параметрах передавай массив, он же утебя будет использоватся для результата. Масив в параметрах передаются по ссылке, новый экземпляр не делается.
Millerbeer
Posts: 247
Joined: 2008-09-12 05:07:34

re

Post 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
Destruction
Junior Expert
Posts: 3221
Joined: 2004-06-24 22:08:56

Post by Destruction »

Есть такой древний топик..

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

:roll:
YokoInjection CodeSweeper
Function not found?
Possession of mathematics at the level of art - a gift that is only available for election.
Sorry for my clumsy English.
Telegram: @tatikom
Millerbeer
Posts: 247
Joined: 2008-09-12 05:07:34

Post by Millerbeer »

Дестр, мысль интересная, но там все удивляются, в том числе и ты, почему это работает? :) В общем я понял, чтоб не париться с массивами, если я хочу получить от функции несколько выходных параметров, нужно ввести входной контрольный параметр, а вызываемая функция проверяет, чего ей пихнули на вход, и отдаёт по нему что надо на выход. :lol: Несколько путанно, но думаю, понять можно...
Last edited by Millerbeer on 2008-09-14 02:00:35, edited 1 time in total.
Millerbeer
Posts: 247
Joined: 2008-09-12 05:07:34

Post by Millerbeer »

полиморфизм ёпт :lol: :lol: :lol:
Grin
Expert!
Posts: 2580
Joined: 2005-05-04 14:05:19
Location: Москва

Post by Grin »

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

Поповоду клонирования масивов, надо смотреть что в итоге получится
или 1 масив с 2 именами или 2 масива
Millerbeer
Posts: 247
Joined: 2008-09-12 05:07:34

Post by Millerbeer »

Ага, ага, ясно, наконец-то дошло! :) Спасибо, Грин, спасибо, Дестр!
Millerbeer
Posts: 247
Joined: 2008-09-12 05:07:34

Post by Millerbeer »

А ещё такой вопрос: Может массив состоять из переменных разного типа? Пример:

Code: Select all

Dim Massiv[3]
Massiv[0]=1
Massiv[1]='something'
Massiv[2]=-0.000377
Такой массив в инже корректен?
Last edited by Millerbeer on 2008-09-14 06:23:53, edited 1 time in total.
Destruction
Junior Expert
Posts: 3221
Joined: 2004-06-24 22:08:56

Post by Destruction »

Корректен.
YokoInjection CodeSweeper
Function not found?
Possession of mathematics at the level of art - a gift that is only available for election.
Sorry for my clumsy English.
Telegram: @tatikom
Post Reply