¿Cómo puedo encontrar el número de claves en un hash, como el uso de $# para las matrices?

InformationsquelleAutor joe | 2009-07-10

5 Comentarios

  1. 73
    scalar keys %hash

    o simplemente

    keys %hash

    si ya estás en un escalar contexto, por ejemplo, my $hash_count = keys %hash  o  print 'bighash' if keys %hash > 1000.

    Por cierto, $#array no encuentra el número de elementos, se encuentra el último índice. scalar @array encuentra el número de elementos.

    • $#+1 – vamos a obtener el número de elementos . yo soy lo que significa que para $#
    • Ah, ya veo. Bueno, todavía me recomendaría scalar @array más de $#array + 1. 🙂
    • ¿hay alguna razón en particular para que
    • Es una operación sencilla, en lugar de dos, y yo trato de escribir código que «pide lo que significa» en lugar de llegar a lo que significa por algunos un poco-demasiado-listo ruta alternativa.
    • Por supuesto, si usted utiliza keys en escalar contexto, por ejemplo, en una cesión a un escalar o un condicional, usted no necesita el scalar hacer esto aún más simple.
    • Sí, y eso vale la pena mencionar. La edición de la…
    • 1 le dará el número de elementos de la matriz iff $[ == 0 (ver perldoc perlvar)

  2. 2

    podemos utilizar como esto demasiado

    my $keys = keys(%r) ;
    print "keys = $keys" ;
    
     0+(keys %r) 
    • he encontrado este después de ser publicados en la
  3. 0

    Pero no después de Perl 5.10:

    use feature ":5.10";
    my %p = ();
    say $#%p;
    
    # $# is no longer supported

    y lo que es peor:

    use feature ":5.10";
    my %p = (a=>1, b=>2, c=>3);
    say $#{%p};
    
    # -1
  4. 0
    print scalar keys %hash;

    o

    $X = keys %hash;
    print $X;

    keys %hash devuelve el valor de teclas en la lista contexto en el que además de los cambios en el contexto escalar (cuando se asigna a la variable escalar).

  5. -4

    Esto funciona de manera fácil y para cualquier tamaño de un hash.

    de impresión escalar llaves %hash;

    • Lo siento, pero… ¿en que es diferente de la muy upvoted, aceptó responder, publicado hace 7 años, otros que el uso de print?

Dejar respuesta

Please enter your comment!
Please enter your name here