Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Dúvida conceitual sobre escopo ou registro

Olá,

iniciando na linguagem m, tenho uma duvida que acredito ter relação com o conceito da linguagem m, ou com escopo ou com registros.

No código abaixo, o objetivo é retornar a mesma lista inserida:

let
    l = {1,2,3,5,6,7},
    n = List.Count(l),
    r = List.Generate(
        () => [i = 0, c = {1,2,3,5,6,7}],
        each [i] < 6,
        each [i = [i] + 1],
        each Number.ToText([c]{[i]})
    )
in
    r

A imagem abaixo representa o retorno da função.

Lista com 6 registros, representando o retorno da função

Sei que a solução é declarar o registro com o iterador e a lista novamente,

each [i = [i] + 1, c = [c]],

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

mas minha dúvida é por que dá o erro?

Nessa instrução não deveria ser possível recuperar a lista? Number.ToText([c]{[i]})

Obrigado.

1 resposta
solução!

Olá Luciano,

Na terceira expressão each [i = [i] + 1], você está redefinindo o registro, mas não está carregando a lista c novamente. Isso faz com que a lista c não esteja disponível nas iterações subsequentes, resultando em um erro ao tentar acessar [c]{[i]}.

A sugestão é garantir que a lista c seja mantida em cada iteração. A solução que você mostrou, de declarar o registro com o iterador e a lista novamente, está correta, porque ao fazer isso, você garante que a lista c está disponível em cada iteração, permitindo que Number.ToText([c]{[i]}) funcione corretamente.

Espero ter ajudado! Bons estudos!

Sucesso

Um grande abraço e até mais!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!