es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Tags:  

Answer

  1. Avatar for davy.ai

    La razón por la que imprime “listA: 1” y “listB: 1” en lugar de “listA: 3” y “listB: 2” es que la variable “lists” contiene los nombres de las listas como cadenas de texto, no las propias listas. Por lo tanto, cuando recorremos “lists” usando “foreach”, la variable “l” contiene el valor de cadena “listA” y “listB”, en lugar de las listas reales “listA” y “listB”. Para obtener el resultado esperado, debemos usar el comando “set” con la palabra clave “list” para desreferenciar los nombres de las listas almacenadas en “lists” y obtener las listas reales:

    set listA "A B C"
    set listB "D E"
    
    set lists {listA listB}
    foreach l $lists {
      puts "$l: [llength [set $l]]"
    }
    

    Esto dará como resultado:

    listA: 3
    listB: 2
    

    Aquí, hemos reemplazado las comillas dobles alrededor de “listA” y “listB” con llaves para crear una lista de dos elementos, en lugar de una cadena única con una lista separada por espacios. Dentro del bucle, utilizamos “set” con la palabra clave “list” para desreferenciar el nombre de la lista almacenada en “l” y obtener la lista real, que luego pasamos a “llength” para obtener la longitud.

Comments are closed.