DEV Community

Discussion on: Um errinho em Elixir

Collapse
wlsf profile image
Willian Frantz

Curioso esse jeito de pensar, mas eu não vejo como um erro em nenhum ponto.

Desde o período de faculdade, sempre gostei de acreditar que lidar com indexes deveria ser assim mesmo, pois se parar pra pensar a gente considera o index 0 como sendo nosso ponto de partida, e a partir dele eu consigo pular pra qualquer index que eu quiser somente determinando quantas casas eu quero pular, e inclusive consigo ter noção da distância.

Ex:

arr = [1, 2, 3, 4, 5, 6]
Enter fullscreen mode Exit fullscreen mode

Se eu parto do index 0 onde o valor é 1 arr[0] == 1, então eu consigo claramente saber que pra chegar no valor 3, eu preciso pular exatas 2 casas pra direita. arr[2] == 3

E também consigo determinar que o valor 3 está a exatas 2 casas de distância do valor 1 (que se encontra no index 0)

Collapse
elixir_utfpr profile image
Elixir UTFPR Author

Mas o ponto de partida dos seres humanos não devs é um. Se eu começo a contar laranjas, eu começo de 1. Qualquer explicação que não leve isto em consideração, está apenas justificando um "erro".

Collapse
wlsf profile image
Willian Frantz • Edited on

Mas "contar laranjas" me parece uma coisa bem diferente de posicionar essas laranjas em índices. Dispor elas de uma forma que você possa calcular a distância entre uma laranja até outra.

ex: Tendo em vista que você tem 4 laranjas, e você já está posicionado na primeira laranja, quantas laranjas você precisa pular pra conseguir alcançar a laranja numero 4? Seriam 3 pulos.

Você consegue contar elementos em Elixir normalmente sem precisar levar em consideração o índice em que estes elementos estão posicionados.

Enum.count(list)

Thread Thread
elixir_utfpr profile image
Elixir UTFPR Author
  1. Estou pensando em contar no sentido de 1, 2, 3,..., não de calcular o total de elementos de uma lista. Você está certo, claro. Eu que misturei.

  2. "Dispor elas de uma forma que você possa calcular a distância entre uma laranja até outra." Este é meu ponto: se eu tenho uma função que me dá um elemento de uma coleção ordenada, e eu quero o terceiro elemento, a função deveria receber 3 para me dar o terceiro elemento. Isto é o principal, não o cálculo de distâncias entre os elementos. Lembrando sempre que o meu ponto de vista é: o que vai facilitar para iniciantes?

Mas, como já disse em outros comentários, isto é um "errinho" mínimo. Elixir é quase perfeita.