Modo não-nulo rigoroso

Se você compilar seu código com --enable-experimental-non-null o compilador Vala será executado verificando se o tipo é não-nulo e considerará que o tipo every não deve ser nulo por padrão, a menos que seja explicitamente declarado nulo por marcação com um ponto de interrogação:

Object o1 = new Object();     // not nullable
Object? o2 = new Object();    // nullable

O compilador irá executar uma análise de tempo de compilação estática para garantir que nenhuma referência nula seja atribuída a uma referência não-nula. Por exemplo, Isso não será possível:

o1 = o2;

o2 pode ser null e o1 foi declarado não-nulo, portanto, esta atribuição é proibida. No entanto, você pode substituir esse comportamento com um elenco explícito não-nulo se tiver certeza de que o2 não é nulo:

o1 = (!) o2;

Este modo rigoroso de não-nulo ajuda a evitar indesejaveis erros de derreferenciação em null(objetos nulos). Esse recurso poderia chegar ao seu pleno potêncial se a nulabilidade dos tipos de retorno nos bindings(vinculos de bibliotecas C) fossem marcados corretamente, o que não é sempre o caso.

results matching ""

    No results matching ""