Métodos de texto e de lista #125
Replies: 22 comments
-
@AlessandroFMello Parabéns pela contribuição. Incrível, em uma só palavra. Acho que devemos implementar todas as sugestões. Primeiro, farei um mapeamento de nomes e alguns comentários sobre o exposto. Feito isso, abrirei uma issue para cada sugestão, que serão distribuídas livremente entre todos os participantes do projeto. |
Beta Was this translation helpful? Give feedback.
-
|
Beta Was this translation helpful? Give feedback.
-
|
Beta Was this translation helpful? Give feedback.
-
Repetição de textoAqui sugiro usarmos o operador var texto = 'Olá, Mundo!'
escreva(texto * 1); // Olá, Mundo!
escreva(texto * 4); // Olá, Mundo!Olá, Mundo!Olá, Mundo!Olá, Mundo!
escreva(texto * 2); // Olá, Mundo!Olá, Mundo! |
Beta Was this translation helpful? Give feedback.
-
Esses novos métodos podem ser incluidos em Dependendo, pode ser interessante trazer alguns métodos dos módulos |
Beta Was this translation helpful? Give feedback.
-
|
Beta Was this translation helpful? Give feedback.
-
|
Beta Was this translation helpful? Give feedback.
-
|
Beta Was this translation helpful? Give feedback.
-
|
Beta Was this translation helpful? Give feedback.
-
|
Beta Was this translation helpful? Give feedback.
-
|
Beta Was this translation helpful? Give feedback.
-
|
Beta Was this translation helpful? Give feedback.
-
|
Beta Was this translation helpful? Give feedback.
-
|
Beta Was this translation helpful? Give feedback.
-
|
Beta Was this translation helpful? Give feedback.
-
|
Beta Was this translation helpful? Give feedback.
-
|
Beta Was this translation helpful? Give feedback.
-
|
Beta Was this translation helpful? Give feedback.
-
|
Beta Was this translation helpful? Give feedback.
-
|
Beta Was this translation helpful? Give feedback.
-
|
Beta Was this translation helpful? Give feedback.
-
Égua está discutindo o suporte em eguatech/egua#165. O que for definido lá fará parte apenas do dialeto Égua Clássico. |
Beta Was this translation helpful? Give feedback.
-
Ao longo da última semana, realizei diversos exercícios básicos de programação (aqueles que fazemos quando estamos aprendendo a programar para exercitar a lógica de programação) retirados da lista de exercícios do site Python.org e alguns outros baseados em desafios do HackerRank.
Foram feitos exercícios de estrutura sequencial, estrutura de decisão, estruturas de repetição, de funções, de array, de strings e de operações matemáticas. Não me preocupei com performance ou complexidade de código, meu objetivo no momento era saber se os exercícios básicos poderiam ser feitos com as estruturas presentes atualmente em Delégua.
Inicialmente não houveram intercorrências, pois as estruturas de decisão (se, senão se, senão) e de repetição (para, enquanto) funcionaram bem. Foram encontrados alguns pontos de melhoria nestas estruturas, como em situações que a presença ou não de um ponto e vírgula quebrava a execução do código, ou no método escreva que até então não aceitava múltiplos parâmetros. Também houve situações em que ocorreram alguns bugs que não consegui reproduzir novamente, o mais recorrente deles é acerca da reatribuição de valores à variáveis já existentes. Nestes casos, quando o valor da variável era reatribuído, a execução do programa quebrava e não haviam logs de erros correspondentes.
Comecei a ter problemas com a execução dos exercícios quando estes pediam input do usuário ou alguns métodos de texto e lista específicos. Então, ficou evidente para mim a necessidade de implementação de alguns destes métodos para que a linguagem tenha métodos nativos mais robustos e funcionais e, também, possa evoluir ao ponto de se tornar o que ela propõe: (nas palavas dos desenvolvedores) "... abordagem mais comercial ..., com valor além do educacional."
Algumas das propostas que tenho têm uma implementação mais complexa, pois impactam diretamente na interface web, com é o caso do método
entrada()
(nome sugerido pelo Leonel Saches), cuja função é se comportar como o métodoinput()
da linguagem Python. Outras, não tem um impacto tão gritante, mas tornam nossa vida como desenvolvedores mais fácil e dinâmica, como é o caso dos template literals, do operador condicional ternário do JavaScript e a compreensão de listas do Python.Abaixo cito os métodos que mais fizeram falta na execução dos exercícios:
obs.: ainda não tenho sugestões de nomes, então utilizarei os nomes nativos dos métodos nas respectivas linguagens.
Métodos de texto:
includes()
Exemplo em JS:
Repare que o método includes é case-sensitive, ou seja, a incidência de letras maiúsculas e minúsculas importa na hora da comparação. Isto nos leva a necessidade de outros dois métodos para tratar o texto: toUpperCase() e toLowerCase() (em JavaScript) ou upper() e lower() (do Python)
toLowerCase()
/toUpperCase()
Exemplo em JS:
repeat()
Exemplo em JS:
obs.: mesmo que ache este método extremamente necessário, acredito que é importante implementar a possibilidade de "multiplicar" um texto para que ele seja repetido diversas vezes
Exemplo em Python:
replace()
Exemplo em JS:
slice()
Exemplo em JS:
split()
Exemplo em JS:
Métodos de lista:
entries()
Array Iterator
que contém os pares chave/valor para cada índice do array, endo a chave o índice e o valor o item naquele índice.Exemplo em JS:
Note que é necessário também a implementação de um método
next()
em caso de um iterador, mas há a posibilidade de, inicialmente, que o métodoentries()
retorne apenas as chaves e valores em um objeto.every()
verdadeiro
caso todos elementos satisfaçam a condição imposta pela função de callback oufalso
, casl algum dos elementos não a satisfaça.Exemplo em JS:
filter()
Exemplo em JS:
find()
Exemplo em JS:
forEach()
Exemplo em JS:
includes()
Exemplo em JS:
join()
Exemplo em JS:
pop()
Exemplo em JS:
shift()
Exemplo em JS:
push()
Exemplo em JS:
reverse()
Exemplo em JS:
slice()
Exemplo em JS:
sort()
Exemplo em JS:
Beta Was this translation helpful? Give feedback.
All reactions