Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как сделать чтобы функция возвращала 2 массива ? Return (@A,@B); не работает 
:(
    Опции темы
stan777
Дата 15.2.2007, 17:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 145
Регистрация: 29.1.2007

Репутация: нет
Всего: нет



Как сделать чтобы функция возвращала два массива ?

sub main{

return (@a,@b);
}
не получается !
PM MAIL   Вверх
Zuzu
Дата 15.2.2007, 18:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 140
Регистрация: 19.10.2006
Где: Екатеринбург

Репутация: 3
Всего: 4



Все работает. Только в твоем случае будет один массив smile Почему - читай perlsub.

Решение - либо передай две ссылки на массивы и работать внутри с этими ссылками. Либо верни две ссылки на два массива.

Примерно так:
Код


sub arrayProcessor1 {
my ($aRef, $bRef) = @_;

my $i;

$$aRef[$i] = ...;
$$bRef[$i] = ...;

return 1;
}

sub arrayProcessor2 {

my @a = ();
my @b = ();
my $i;

$a[$i] = ...;
$b[$i] = ...;

return \@a, \@b;

}

my @a1 = ();
my @b1 = ();
my $i;

arrayProcessor1(\@a, \@b);

my ($aRef2, $bRef2) = arrayProcessor2();

$$aRef2[$i] = ...;
$$bRef2[$i] = ...;



 

Это сообщение отредактировал(а) Zuzu - 15.2.2007, 18:28
--------------------
Проводить эксперименты на живом сервере опасно, а на мертвом - бесполезно.
PM   Вверх
stan777
Дата 15.2.2007, 18:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 145
Регистрация: 29.1.2007

Репутация: нет
Всего: нет



sub arrayProcessor1 {
my ($aRef, $bRef) = @_;

my $i;

$$aRef[$i] = ...;
$$bRef[$i] = ...;

return 1;
}

Спасибо думаю меня ссылки тоже устроят smile, но чтобы $$aRef[$i] превратить в массив обычного вида, что нужно ?

Это сообщение отредактировал(а) stan777 - 15.2.2007, 19:11
PM MAIL   Вверх
Zuzu
Дата 16.2.2007, 09:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 140
Регистрация: 19.10.2006
Где: Екатеринбург

Репутация: 3
Всего: 4






Код

#!/usr/bin/perl

use strict;

my @a = (1, 2, 3, 4, 5);
my $b = \@a;

print '$$b[4]  :' . $$b[4]   . "\n";  
print '$b->[4] :' . $b->[4]  . "\n";
print '${$b}[4]:' . ${$b}[4] . "\n";

my @c = @$b;
print 'c: ' . join('==', @c) . "\n";

@c = @{$b};
print 'c: ' . join('==', @c) . "\n";

exit;



stan777, читай Cookbook - там все хорошо описано.
--------------------
Проводить эксперименты на живом сервере опасно, а на мертвом - бесполезно.
PM   Вверх
stan777
Дата 16.2.2007, 11:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 145
Регистрация: 29.1.2007

Репутация: нет
Всего: нет



Цитата(Zuzu @ 16.2.2007,  09:51)
Код

#!/usr/bin/perl

use strict;

my @a = (1, 2, 3, 4, 5);
my $b = \@a;

print '$$b[4]  :' . $$b[4]   . "\n";  
print '$b->[4] :' . $b->[4]  . "\n";
print '${$b}[4]:' . ${$b}[4] . "\n";

my @c = @$b;
print 'c: ' . join('==', @c) . "\n";

@c = @{$b};
print 'c: ' . join('==', @c) . "\n";

exit;



stan777, читай Cookbook - там все хорошо описано.

Спасибо за обзор smile Последний пример, полностью все объясняет ! 


Это сообщение отредактировал(а) stan777 - 16.2.2007, 11:19
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0593 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.