Hat etwas gesucht, konnte aber nichts nützliches finden.
Ich habe mich gefragt, ob es eine Übersichtstabelle für Einsteiger gibt, um etwas über die "Regeln" der Verwendung von Klammern / Klammern zu erfahren, speziell die Unterschiede zwischen (), [], {}.
Leider, nach meiner Erfahrung, use strict
und use warnings
sagen mir nicht, ob ich die falschen parens benutze.
Zum Beispiel sind unten die legitimen Codes (b / c sie kamen von Ikegami).
%Vor%Aber sind diese unten auch echt? Oft ist es schwer genug (für mich) zu wissen, ob es andere Teile (Logik) der Codes sind, die das Problem verursachen. Parens für mich (ein Anfänger) zu sortieren, scheint trivial bis gut zu sein. Jeder Leitfaden zur richtigen Verwendung von Parens ist großartig.
%Vor%In Klammern haben Klammern, Klammern und Klammern mehrere Bedeutungen, aber geschweifte Klammern haben wahrscheinlich am meisten.
2 * 3 + 4
vs. 2 * (3 + 4)
aussortieren.
join "", 1, 2, 3
vs. join("", 1, 2), 3
$foo->bar(1, 2)
(wird nicht für leere Argliste benötigt) Foo->new
und Foo()->new
. $code->()
sub foo ($$;$%) { ... }
my @array = 1 .. 5; $array[1]
my $aref = [1 .. 5]
do
, sub
, map
, grep
, Bedingungen, Schleifenkonstrukte, leere Blöcke, etikettierte Blöcke, ...) $hash{foo}
my $hashref = { a => 3, b => 2 }
print { $filehandles[5] } "Hello world"
@{ $aref }
, %{ $hashref }
, ... package Foo { ... }
... und fast alle Zeichen können als Trennzeichen für zitatähnliche Operatoren verwendet werden q//
, qq//
, qr//
, qx//
, m//
, s///
, tr///
, y///
, was zu interessanten Sachen wie s(foo){bar}g
@{"genotype".($i)}
verwendet Curlies für die symbolische Dereferenzierung und Parens (um unnötigerweise die Priorität zu umgehen).
@{$genotype[$i]}
verwendet eckige Klammern als Array-Subscript-Operator und Curlies für die Dereferenzierung
$genotype[$i] = [ split (/:/, $original_line[$i])]
hat verschiedene Teile: $genotype[$i]
und $original_line[$i]
verwenden Klammern für Array-Subskriptionen. Die = [ ... ]
verwendet Klammern, um eine anonyme arrayref zu erstellen. Die Parens in split(/:/, ...)
begrenzen nur die Argumentliste für split
(Sortierung der Priorität).
my @genotype = map {[split /:/]} @original_line[6..14]
verwendet Klammern als Array-Subskriptoperator in @original_line[6..14]
und für ein anonymes Array in [split /:/]
. Die Curlies werden verwendet, um einen Block als erstes Argument für map
zu bilden.
map
hat zwei Syntaxen
In beiden Fällen können Parens wie ein normales Sub um die Arcs herum verwendet werden.
%Vor%Beachten Sie, dass LIST zwar eine leere Liste zurückgeben kann, aber nicht vollständig weggelassen werden kann, wie Sie es für Subs tun können.
%Vor% ist ein Beispiel für map BLOCK LIST
, während
liefert illegal EXPR, aber keine LIST. Hier sind akzeptable Syntaxen:
%Vor%Wenn der Ausdruck etwas wie (2 + $ _) * 3 war, haben Sie nur diese Optionen:
%Vor%Wenn du die Parens von letzterem entfernst, landest du mit dem illegalen
%Vor% Sie können mit +
aber es ist besser, in die map BLOCK LIST
-Notation zu wechseln.
Tags und Links perl square-bracket curly-brackets