Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Общие вопросы > Как передать в subrutine два arrays?


Автор: unkis 30.10.2007, 11:46
Ребята, возникла такая маленькая проблема,  нужно передать два Arrays в subrutine.

я пытаюсь сделать это вот так

Код

@array1 = (1,0,0);
@array2 = (1,1,1);

@array3 = &addToVectors(@array1,@array2);
print "Array3 is @array3";
  
sub addToVectors{    
 my ( @v1, @v2) = @_;   
   @v3;        
    for(my $i; $i<@v1;$i++){
        $v3[$i] = ($v1[$i] xor $v2[$i])
    }    
    return @v3;
}


но при передачи, эти два arrays соединяются в один и присваиваются @v1,  а мне надо чтобы @v1 = @array1 и @v2 = @array2.

Вот и вопрос как все таки передать два arrays?

Автор: arto 30.10.2007, 11:48
по ссылке

Автор: GoodBoy 30.10.2007, 12:02
unkis, как уже сказали - работай ссылками... Либо переходи на Perl 6 - он позволит корректно работать твоему примеру...  smile 

Автор: unkis 30.10.2007, 12:03
а это как?  smile 

Автор: amg 30.10.2007, 15:47
Код

@array1 = (1,0,0);
@array2 = (1,1,1);

@array3 = &addToVectors(\@array1,\@array2);
print "Array3 is @array3\n";
  
sub addToVectors{    
 my ( $v1, $v2) = @_;   
 my @v3;        
    for($i=0; $i<@$v1;$i++){
        $v3[$i] = ($v1->[$i] xor $v2->[$i])
    }    
    return @v3;
}


Автор: unkis 30.10.2007, 17:49
спасибо

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)