Tcl - Listas

Lista é um dos tipos de dados básicos disponíveis em Tcl. É usado para representar uma coleção ordenada de itens. Ele pode incluir diferentes tipos de itens na mesma lista. Além disso, uma lista pode conter outra lista.

Uma coisa importante que precisa ser observada é que essas listas são representadas como strings completamente e processadas para formar itens individuais quando necessário. Portanto, evite listas grandes e em tais casos; use array.

Criação de uma lista

A sintaxe geral da lista é fornecida abaixo -

set listName { item1 item2 item3 .. itemn }
# or
set listName [list item1 item2 item3]
# or 
set listName [split "items separated by a character" split_character]

Alguns exemplos são fornecidos abaixo -

#!/usr/bin/tclsh

set colorList1 {red green blue}
set colorList2 [list red green blue]
set colorList3 [split "red_green_blue" _]
puts $colorList1
puts $colorList2
puts $colorList3

Quando o código acima é executado, ele produz o seguinte resultado -

red green blue
red green blue
red green blue

Anexando Item a uma Lista

A sintaxe para anexar item a uma lista é fornecida abaixo -

append listName split_character value
# or
lappend listName value

Alguns exemplos são fornecidos abaixo -

#!/usr/bin/tclsh

set var orange
append var " " "blue"
lappend var "red" 
lappend var "green" 
puts $var

Quando o código acima é executado, ele produz o seguinte resultado -

orange blue red green

Comprimento da Lista

A sintaxe para comprimento da lista é fornecida abaixo -

llength listName

O exemplo de comprimento da lista é fornecido abaixo -

#!/usr/bin/tclsh

set var {orange blue red green}
puts [llength $var]

Quando o código acima é executado, ele produz o seguinte resultado -

4

Item da lista no índice

A sintaxe para selecionar o item da lista em um índice específico é fornecida abaixo -

lindex listname index

O exemplo de item da lista no índice é fornecido abaixo -

#!/usr/bin/tclsh

set var {orange blue red green}
puts [lindex $var  1]

Quando o código acima é executado, ele produz o seguinte resultado -

blue

Inserir item no índice

A sintaxe para inserir itens de lista em um índice específico é fornecida a seguir.

linsert listname index value1 value2..valuen

Um exemplo para inserir um item de lista em um índice específico é fornecido abaixo.

#!/usr/bin/tclsh

set var {orange blue red green}
set var [linsert  $var 3 black white]
puts $var

Quando o código acima é executado, ele produz o seguinte resultado -

orange blue red black white green

Substituir itens em índices

A sintaxe para substituir os itens da lista em índices específicos é fornecida abaixo -

lreplace listname firstindex lastindex value1 value2..valuen

Um exemplo de substituição de itens de lista em índices específicos é fornecido abaixo.

#!/usr/bin/tclsh

set var {orange blue red green}
set var [lreplace $var 2 3 black white]
puts $var

Quando o código acima é executado, ele produz o seguinte resultado -

orange blue black white

Definir item no índice

A sintaxe para definir o item da lista em um índice específico é fornecida abaixo -

lset listname index value

Um exemplo para definir o item da lista em um índice específico é fornecido abaixo -

#!/usr/bin/tclsh

set var {orange blue red green}
lset var 0 black 
puts $var

Quando o código acima é executado, ele produz o seguinte resultado -

black blue red green

Transformar lista em variáveis

A sintaxe para copiar valores para variáveis ​​é fornecida abaixo -

lassign listname variable1 variable2.. variablen

Exemplo para transformar lista em variáveis ​​é fornecido abaixo -

#!/usr/bin/tclsh

set var {orange blue red green}
lassign $var colour1 colour2
puts $colour1
puts $colour2

Quando o código acima é executado, ele produz o seguinte resultado -

orange
blue

Classificando uma lista

A sintaxe para classificar uma lista é fornecida abaixo -

lsort listname

Um exemplo de classificação de uma lista é fornecido abaixo -

#!/usr/bin/tclsh

set var {orange blue red green}
set var [lsort $var]
puts $var

Quando o código acima é executado, ele produz o seguinte resultado -

blue green orange red