Jak mogę dodać skrót do hasza w języku Perl bez użycia pętli?Jak mogę połączyć dwa hasze w Perlu bez użycia pętli?
Odpowiedz
Jeśli masz na myśli wziąć unię swoich danych, wystarczy zrobić:
%c = (%a, %b);
Dlaczego% a = (% a,% b); praca? % a zostaje "skasowany" – biznez
Działa on dla mnie: "% a = (" a "=>" b "," c "=> 1);% b = (" c "=>" d ");% a = (% a,% b); print join (',', map {"'$ _' => \" $ {a {$ _}} \ ""} keys% a), "\ n"; " Elementy z% b z tym samym kluczem mają pierwszeństwo, ale inne elementy z% a są obecne po unii. – outis
@yskhoo: to działa. – ysth
Można również użyć plasterki scalić jeden skrót do drugiego:
@a{keys %b} = values %b;
Zauważ, że pozycje w% B, zastąpić elementy w% a, które mają ten sam klucz.
Dodatkowy kredyt, z hash ref w aib, robimy @ {$ a} {keys% $ b} = wartości% $ b; – daotoad
Oczekuję, że będzie to bardziej wydajne niż druga odpowiedź, ponieważ ta funkcja odtwarza hasz również dla już istniejących elementów, podczas gdy ta dodaje klucze dla nowych elementów. Jeśli było wiele elementów w% a, w porównaniu do% b, różnica może być godna szacunku. – bart
Może. Moje podejście powoduje również dwukrotne przejście do% b. Jeśli% b jest większy niż% a, druga technika może być szybsza. Najszybciej ze wszystkich może być pętla, ale OP nie chciał tego. – outis
Spowoduje to połączenie skrótów, a także uwzględnienie niezdefiniowanych pozycji, aby nie zastępowały treści.
my %hash = merge(\%hash1, \%hash2, \%hash3);
sub merge {
my %result;
%result = %{ $_[0] };
shift;
foreach my $ref (@_) {
for my $key (keys %{$ref}) {
if (defined $ref->{$key}) {
$result{$key} = $ref->{$key};
}
}
}
return %result;
}
my %c = %a;
map {$c{$_} = $b{$_}} keys %b;
- 1. Jak mogę połączyć dwa wyrażenia lambda bez użycia metody Invoke?
- 2. Dynamicznie/rekursywnie buduje hasze w Perlu?
- 3. Jak mogę całkowicie zresetować hash bez użycia pętli for?
- 4. Zapis zapytań bez użycia pętli
- 5. Jak porównać dwa hashe w Perlu bez użycia opcji Data :: Compare?
- 6. Jak połączyć zmienne w Perlu?
- 7. Czy mogę wydrukować tablicę ciągów bez użycia pętli for?
- 8. Jak mogę mnożyć wektory bez pętli?
- 9. Jak mogę złamać zewnętrzną pętlę z wewnętrznej pętli w Perlu?
- 10. Jak połączyć dwa ArrayLists?
- 11. jak połączyć dwa LPCWSTRy?
- 12. Jak połączyć dwa obrazy bez utraty intensywności w opencv
- 13. Jak mogę połączyć ciąg w pętli w JSTL/JSP?
- 14. Jak mogę sprawdzić (zerknąć) STDIN dla danych potokowych w Perlu bez użycia select?
- 15. Jak mogę połączyć dwa pliki CSV w R?
- 16. Jak połączyć dwa SwiftyJSON obiektów
- 17. Jak połączyć dwa atomy/łańcuchy?
- 18. Jak połączyć dwa wchar_t * razem?
- 19. Jak połączyć dwa strumienie pamięci?
- 20. Jak połączyć dwa punkty bez przekraczania innej ścieżki?
- 21. Jak połączyć dwa plasterki w Rust?
- 22. Jak połączyć dwa wyniki jQuery
- 23. Jak połączyć dwa generatory w Pythonie?
- 24. Jak połączyć dwa ResultSets w Javie?
- 25. Jak połączyć dwa obiekty w JavaScript?
- 26. Jak połączyć dwa proci w jeden?
- 27. Jak połączyć dwa ciągi (IO) w Haskell?
- 28. Jak połączyć dwa wektory w ramce danych
- 29. Jak mogę po prostu LINQ Join() połączyć dwa IQueryables?
- 30. Połączyć dwa wyniki w Powershell
Dlaczego nie chcesz użyć pętli? –