English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Variável, tipos básicos, funções, comentários e controle de fluxo, esses são quase conceitos de programação que cada linguagem de programação possui.
Esses conceitos básicos existirão em cada programa Rust, e aprender cedo eles tornarão você aprender o uso do Rust mais rápido.
Primeiro, deve-se esclarecer que o Rust é uma linguagem de tipo forte, mas possui a capacidade de julgar automaticamente o tipo de variável. Isso é fácil de confundir com linguagens de tipo fraco.
Para declarar uma variável, é necessário usar a palavra-chave let. Por exemplo:
let a = 123;
Desenvolvedores que aprenderam apenas JavaScript são sensíveis a essa frase, enquanto desenvolvedores que aprenderam apenas C não entendem essa frase.
Depois dessa declaração de sentença, os três seguintes códigos são proibidos:
a = "abc"; a = 4.56; a = 456;
O erro na primeira linha está em declarar a como 123 A partir de agora, a a será determinada como um número inteiro e não pode receber valores do tipo string.
O erro na segunda linha está na perda de precisão na conversão automática de números, o Rust não permite conversões automáticas de tipos de dados que perdem precisão.
O erro na terceira linha está em a não ser uma variável mutável.
Os dois primeiros erros são fáceis de entender, mas o terceiro é o que quer dizer? A a não é uma variável?
Isso envolve o design que o Rust fez para segurança de alta concorrência: no nível da linguagem, tentar ao máximo limitar a variação dos valores das variáveis. Portanto, o valor de a não é mutável. Isso não significa que a não é uma "variável" (no inglês, variable), a documentação oficial chama essa variável de "variável imutável".
Se parte do nosso programa roda sob a hipótese de que um valor nunca mudará, enquanto outra parte do nosso código muda esse valor, a primeira parte do código pode não funcionar conforme o planejado. Por essa razão, erros causados por isso são difíceis de encontrar após o fato. Essa é a razão pela qual o Rust foi projetado com essa mecânica.
Claro, tornar uma variável "mudável" (mutable) requer apenas uma palavra-chave mut.
let mut a = 123; a = 456;
Este programa está correto.
Se as variáveis imutáveis são imutáveis, não é isso o que chamamos de constante? Por que chamar de variável?
Variáveis e constantes ainda têm diferenças. No Rust, o seguinte programa é válido:
let a = 123; let a = 456;
Mas se a for uma constante, não é permitido:
const a: i32 = 123; let a = 456;
Os valores das variáveis podem ser "reatribuídos", mas não podem ser alterados antes da reatribuição, o que garante que o compilador possa inferir logicamente o programa em cada área após a reatribuição. Embora o Rust tenha a função de julgamento automático de tipo, em alguns casos, a declaração de tipo é mais conveniente:
let a: u64 = 123;
Aqui foi declarado a como não assinada 64 Variável de inteiro bit, se não for declarado o tipo, a será automaticamente considerada como assinada 32 Variável de inteiro bit, o que tem um grande impacto no intervalo de valores de a.
O conceito de shadowing é diferente do "override" ou "overload" em outras linguagens orientadas a objetos. Shadowing é o que foi mencionado como "reatribuição", e o uso de aspas foi feito para substituir o conceito sem introduzir o conceito.
Shadowing é o mecanismo de reutilização do nome da variável:
fn main() { let x = 5; let x = x + 1; let x = x * 2; println!("O valor de x é: {}", x); }
O resultado de execução deste programa é:
O valor de x é: 12
O shadowing e a atribuição de variáveis mutáveis não são conceitos idênticos. Shadowing é o uso de um mesmo nome para representar outro objeto de variável, cujo tipo, atributo mutável e valor podem mudar. No entanto, a atribuição de variáveis mutáveis pode apenas ocorrer a mudança de valor.
let mut s = "123"; s = s.len();
Este programa cometerá um erro: não é possível atribuir um valor inteiro a uma variável de string.