Programa de linha de comando Hacklang em modo estrito
-
21-12-2019 - |
Pergunta
Existe alguma maneira de criar programas de linha de comando no modo estrito de Hack?Como o modo estrito do Hack não permite instruções fora de uma função, não posso chamar meu main
função.
(Esta é uma questão bastante teórica, pois é fácil contornar o problema tendo um arquivo não estrito para chamar a função principal.)
Solução
Atualmente não é possível escrever um projeto (programa de linha de comando ou outro) 100% no modo Hack strict devido a esta limitação.Na verdade, você precisará ter algum código de bootstrap no nível superior ("pseudodomínio"), o que o strict atualmente simplesmente não permite.A razão para isso é que o código de nível superior é basicamente impossível de ser verificado estaticamente, já que tudo é global e pode ser alterado nos bastidores a qualquer momento por qualquer código.
No entanto, o resultado final é bobo e é algo que queremos consertar eventualmente - não há, por exemplo, nenhuma razão para impedir uma única chamada para uma função sem parâmetros, ou seja, exatamente o que você precisa para sair imediatamente do pseudoprincipal e entrar em um função.