FwArrayOf
Array tipado em TLPP. Garante que todos os elementos sao do tipo declarado. Substitui arrays genericos sem type-safety do AdvPL.
Assinatura: FwArrayOf(cTipo):new() -> oArr
Retorna: object
Em AdvPL classico, array e generico — pode misturar string, numero, sub-array, NIL. Em TLPP, FwArrayOf cria um array tipado: tentativa de adicionar tipo errado lanca exception em compile time (se possivel) ou runtime.
Sintaxe
local aNumeros as object
aNumeros := FwArrayOf('numeric'):new()
aNumeros:add(10)
aNumeros:add(20)
aNumeros:add(30)
// aNumeros:add('texto') // ERRO em runtime — tipo incompativel
conout(aNumeros:size()) // 3
conout(aNumeros:get(1)) // 10Tipos suportados
'character''numeric''logical''date''array''object'ou nome de classe ('MinhaClasse')
Array de objetos custom
class Cliente
public data id as character
public data nome as character
endclass
local aClientes as object
aClientes := FwArrayOf('Cliente'):new()
local oCliente as object
oCliente := Cliente():new()
oCliente:id := '001'
oCliente:nome := 'Mayco'
aClientes:add(oCliente)
// Iterar
local i as numeric
for i := 1 to aClientes:size()
conout(aClientes:get(i):nome)
next iVantagens
- Type-safety: bug na linha onde voce adiciona errado, nao 50 linhas depois
- Auto-complete IDE: TDS-VSCode sabe o tipo retornado por
:get()e oferece sugestoes - Documentacao implicita: ler
FwArrayOf('Cliente')deixa intencao clara
Pegadinhas
- Performance: tem overhead de checagem vs array nativo. Pra hot path (10mil iteracoes), use array AdvPL classico
- Migracao: codigo legado usando array nativo nao converte facil — use
FwArrayOfem codigo NOVO - Mixed types: se precisa misturar, use array nativo mesmo
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
cTipo | Character | sim | Tipo dos elementos (character, numeric, logical, date, array, object, ou nome de classe) |
Exemplos
Array tipado
aIds := FwArrayOf('numeric'):new()
aIds:add(10)