Executando verificação de segurança...
1

Comandos/Sintaxes Engraçadas nas Linguagens de Programação

Quando iniciamos em uma nova linguagem de programação acredito que uma das primeiras coisas que fazemos é aprender os comandos básicos de controle de fluxo (if...else, for, while, etc.)

Reparei que existem algumas linguagens que decidem "inovar" inventando seus próprios comandos de controles de fluxo de forma totalmente arbitrária.

Como o while-else do Python:

while condition:
    # ...
    if not foo:
        break
    return foo
else:
    print("Hello!") # Só roda quando ele faz o loop completo sem dar break

Por qual razão eu utilizaria isso?

Poupar uma flag extra?

É uma boa justificativa, mas só de colocar um else em um while já me faz questionar se eu estou lúcido.

É um consenso geral que a palavra nobreak nesse contexto faria mais sentido do que else.

Outro exemplo é uso da keyword fallthrough em Golang:

numero := 2
switch numero {
case 1:
    fmt.Println("Um")
case 2:
    fmt.Println("Dois")
    fallthrough // Força entrar no case 3
case 3:
    fmt.Println("Três")
default:
    fmt.Println("Outro")
}
}

Nesse caso, o fallthrough força a execução do próximo case do switch (independente da condição ser verdadeira ou não), e novamente: "Por qual razão eu utilizaria isso?"

Nsse caso do fallthrough tenho que ser justo, é justificável considerando que você não precisa dar break em cada case no Go.

O fallthrough seria uma maneira de forçar a "queda" do switch que é um efeito padrão de outras linguagens como Java, C e JavaScript

Temos também o caso do unless do Ruby:

# Inverso de um if, o mesmo que verificar se não está ativo
unless status == "ativo"
  puts "Reativando conta..."
else
  puts "Conta já ativa."
end

Acho essas ocorrências um tanto quanto engraçadas, porque as vezes parece que a linguagem tenta inovar e criar algum utilitário ou syntactic sugar para coisas básicas, mas na verdade ela cria uma feature que pouquíssima gente usa e que só faz sentido para aquela linguagem.

Muitos desses fluxos são contra-intuitivos, embora a comunidade as vezes acabe atribuindo um uso a estes recursos.

E você? Conhece algum exemplo dessas sintaxes arbitrárias que só existe em uma linguagem?

Carregando publicação patrocinada...
1

Em pascal (que eu usava no delphi7)

if Condition then // then significa então
  DoSomething // sem ponto-e-vírgula aqui
else
  DoSomethingElse; // aqui precisa de ponto-e-vírgula

Outro exemplo (quando o if determina mais de uma instrução)

if Condition then
begin
  Line1;
  Line2;
end // Não pode ponto-e-vírgula antes do else
else
begin // começo
  Line3;
  Line4;
end; // fim

screenshot