я был заинтересован в ржавчине, и поэтому я начал читать руководство по программированию ржавчины на сайте ржавчины, и обнаружил, что переменные объявлены следующим образом:Почему Ржавчина беспокоит «пусть»?
let x: i32 = 5;
Что означает присвоить целое значение 5 переменных тип integer 32 бит, на который будет обозначаться обозначение x
с этого момента и далее.
Главный вопрос: почему ключевое слово let
существует? Это кажется излишним, как будто он фактически ничего не делает.
Я предполагаю, что компилятор сможет сказать, что следующая переменная (или константной переменной) Объявление:
x: i32 = 5;
Там не появляется, чтобы быть причиной для let
ключевого слова, но предположительно там - - разумная причина, потому что Rust сосредоточен на безопасности. Так в чем же причина?
Редактировать: Дополнение: В качестве аргументов функции ключевое слово let не требуется. Вот пример:
fn add1(x: i32) -> i32
{
x = x + 1
}
Это кажется немного странным - это «выглядит как» проход по ссылке из-за недостающего let
. Но это не так. Это пропуск по значению. (Или, по крайней мере, я думаю, что это так.) Является ли это синтаксической непоследовательностью?
Как и в сторону, я бы найти его гораздо более логичным, чтобы изменить это заявление вокруг и написать:
i32 x = 5;
Поместите двоеточие там, если вы:
i32: x = 5;
Я думаю, что я бы счел это более логичным, потому что:
- При программировании вы обычно знаете, какой тип данных вы хотите, прежде чем думать о имени для него.
Возможно, некоторые думают наоборот? Но это подводит меня к другому моменту; как можно объявить несколько переменных одного типа в Rust? Такие как:
let x, y, z: i32 = {4, 5, 5} // A guess of what this might look like?
Или это просто не разрешено в Rust?
Я не понимаю вашу точку зрения. В сигнатуре функции контекст сообщает нам, что мы объявляем параметры и не присваиваем ничего. И как создается впечатление, что что-либо происходит по ссылке, без каких-либо «и» или других индикаторов, выходит за меня. – delnan
@delnan Прочтите внимательно - я сказал, что это не по ссылке, но похоже, что это возможно. – user3728501
Я понимаю это. Я просто не понимаю, как это может выглядеть. Нет ничего, что указывало бы на это. Как вы заметили, единственное различие заключается в отсутствии 'let', что это связано с by-value/by-reference? – delnan