chcę zrobić takie same jak poniżejJak pętli Perl stałej
my @nucleotides = ('A', 'C', 'G', 'T');
foreach (@nucleotides) {
print $_;
}
ale stosując
use constant NUCLEOTIDES => ['A', 'C', 'G', 'T'];
W jaki sposób można to zrobić?
chcę zrobić takie same jak poniżejJak pętli Perl stałej
my @nucleotides = ('A', 'C', 'G', 'T');
foreach (@nucleotides) {
print $_;
}
ale stosując
use constant NUCLEOTIDES => ['A', 'C', 'G', 'T'];
W jaki sposób można to zrobić?
use constant NUCLEOTIDES => [ qw{ A C G T } ];
foreach (@{+NUCLEOTIDES}) {
print;
}
Chociaż uwaga: Chociaż nukleotydy stałą elementy wymienionej tablicy (np NUCLEOTIDES->[0]
) wciąż może być modyfikowany.
Thx dużo, to naprawdę pomocne. –
nie zapomnij przyjąć odpowiedzi. – dave
my $nucleotides = NUCLEOTIDES;
foreach (@$nucleotides) {
}
Albo można zrobić tę funkcję użytkową:
Sub (@) { powrócić @_ == 1 & & ref ($ [0]) eq 'ARRAY'? @ {shift()} : @ ; }
A potem nazwać tak:
for my $n (in NUCLEOTIDES) {
}
Dlaczego nie uczynić stałym zwróci listę?
sub NUCLEOTIDES() {qw(A C G T)}
print for NUCLEOTIDES;
lub nawet lista w kontekście listowym i ref tablicy w kontekście skalarnym:
sub NUCLEOTIDES() {wantarray ? qw(A C G T) : [qw(A C G T)]}
print for NUCLEOTIDES;
print NUCLEOTIDES->[2];
jeśli trzeba także często dostęp do poszczególnych elementów.
Pierwsza funkcja jest odpowiednikiem 'use constant NUCLEOTIDES => qw/A C G T /'. –
Jeśli chcesz użyć stałej pragmy, wtedy można po prostu powiedzieć
#!/usr/bin/perl
use strict;
use warnings;
use constant NUCLEOTIDES => qw/A C G T/;
for my $nucleotide (NUCLEOTIDES) {
print "$nucleotide\n";
}
pozycja na prawo od przecinka tłuszczu (=>
) nie musi być wartością skalarną.
"Użyj stałej" to więcej kłopotów, niż tu warto. Dlaczego nie tylko "nasze @NUCLEOTIDES = qw (A C G T);" ?? – runrig
Ponieważ informacje w tej stałej nie będą modyfikowane przez cały czas działania, nawet jeśli nie jest to naprawdę "stałe". –
Nie należy go modyfikować. – runrig