2015-03-01 2 views
0

Я изучаю Rust сегодня, и я наткнулся на возможность присваивать переменные через операторы if/then. Например,Может ли цикл while оценить значение?

let y = 5; 

let x = 
    if y > 20{ 
     20 
    } else { 
     y 
    }; 

Позволяет назначать переменные через оператор if Есть ли способ сделать это с помощью цикла while?

Я попытался

fn main() { 
    let mut n = 0; 


    let mut num = 0; 

    num += 
     while n < 10 { 
      n+=1; 
      5 
     }; 

} 

с надеждой, что num в конечном итоге будет равен 50, с петлей в то время как увеличивающийся num на пять каждую итерацию, но я получаю следующую ошибку

error: mismatched types: 
expected `()`, 
found `_` 
(expected(), 
found integral variable) [E0308] 
error: mismatched types: 
expected `_`, 
found `()` 
(expected integral variable, 
found()) [E0308] 
error: aborting due to 2 previous errors 

Естественно , Я мог бы поставить num+=5 внутри цикла while, но это увлекает его.

Это мой первый день с ржавчиной, поэтому я даже не знаю, можно ли делать то, что я имею в виду. Действительно ли это возможно? Я делаю синтаксическую ошибку?

fn main() { 

    let mut num = 0; 

    num += 
     while num < 50 { 
      5 
     }; 

} 

Вышеупомянутая версия кода, который я пытаюсь запустить, но также не работает.

+1

Я изменил ваш заголовок, чтобы попытаться выяснить, что вы просите, пожалуйста, убедитесь, что он все еще точно отражает то, что вы хотите знать. – Shepmaster

+0

Спасибо! Улучшает мой вопрос. – mjkaufer

ответ

4

Нет, в настоящее время петли всегда возвращают (), тип устройства. Существует RFC, который предлагает изменить это, однако.

+1

Это RFC для чего-то совершенно отличного от того, что было предпринято здесь; Я могу с уверенностью сказать, что суммирование каждой итерации для получения результата выражения цикла никогда не произойдет. –

Смежные вопросы