このセクションでは、錆の言語を学ぶ变量、数据类型、函数、注释、流程控制
これらの5つの分野でコンテンツを。上記は、この論文の後の最初の2、3つのコンテンツの内容を説明しています。
機能
さびの機能コードで流行している、我々はまた、その主な機能主な機能を見てきましたし、それがプログラムに入り口です。私たちは、Fnキーのを見てきました、関数を宣言するために使用されます。
特別な指示:錆言語の関数と変数は小文字とアンダースコア命名しているが、それ以外の名前の場合は、警告が表示されます。
機能説明
Fnキー機能は、関数名と括弧が続く始まり、ある関数本体コンパイラの開始と終了を指示するために使用され、最終的なブレース。我々はまた、我々は、関数名と括弧で定義された関数を呼び出すことができ、定義された関数は、main関数のmain関数の前に戻ってすることができます。錆限り、あなたはどこかでそれを定義するように、位置の定義を気にしないでください。簡単な例で見てみましょう:
fn main() {
println!("Hello, world!");
another_function();
}
fn another_function() {
println!("另一个函数");
}
結果:
cargo run
Compiling hello_cargo v0.1.0 (/Users/shanpengfei/work/rust-work-space/study/hello_cargo)
Finished dev [unoptimized + debuginfo] target(s) in 0.57s
Running `target/debug/hello_cargo`
Hello, world!
另一个函数
関数の引数
機能はまた、一緒にいくつかのパラメータ、関数、パラメータに含まれている関数宣言を構成することができます。私たちは関数を呼び出すときに、だけでなく、それを渡すために必要な関数パラメータを必要とします。ここでは、例を直接見:
fn main() {
another_function(5, 6);
}
fn another_function(x: i32, y: i32) {
println!("x 的值是: {}", x);
println!("y 的值是: {}", y);
}
結果が実行されています。
cargo run
Compiling hello_cargo v0.1.0 (/Users/shanpengfei/work/rust-work-space/study/hello_cargo)
Finished dev [unoptimized + debuginfo] target(s) in 0.23s
Running `target/debug/hello_cargo`
The value of x is: 5
The value of y is: 6
5 Xに渡されるパス二つのパラメータの例として、図6は、Yを通過しました。
関数の本体は、文や表現が含まれていてもよいです
ステートメントは、機能セットの直列体であり、そして式の組み合わせの末尾。私たちは、最後に関数式を使用していないが、我々は、関数文の本体の一部として式を参照しようとしています。錆は錆言語を理解するために非常に重要である表現ベースの言語であるため、他の言語は、このようなデザインを持っていない、我々はそれを見ては、どのような設計です。
また、前章のステートメントと式を使用していました。声明は、戻り値式なしコレクション操作では、結果を返すために使用されます。他の言語では、コードを書くことができx = y = 6
、xとyは6であるように、しかし、さびで、このような言語を使用できません。
戻り値は、表現のさび言語固有のスタイルです。
- いくつかの簡単な数学の方程式、そのようなものが
5 + 6
11リターンの表現です。 - 式文、声明など6つの一部である
let y = 6
6のリターン式の値。 - また、関数呼び出し式です。
- マクロ呼び出しも式です。
- 新しいスコープを作成するために使用することは、{}も式です。
直接この1つは、それを説明するかどうかを確認するためのコードで:
fn main() {
let x = 5;
let y = {
let x = 3;
x + 1
};
println!("y 的值是: {}", y);
}
ここでは、表現は見やすいです。
{
let x = 3;
x + 1
};
{}内のこの新しいスコープが作成されるので、変数yのlet文に値4、及びこの値の4を返します。特記事項:式はセミコロンですることはできませんので、あなたはセミコロンを追加した場合のx + 1は、セミコロンで終了していないが、それは自動的にステートメントに変換され、それは心に留めておくためにある4の値を返すことはありません。
関数の戻り値
それは、結果を返す関数呼び出しコードに機能することができます。後で>戻り値の型を宣言 - 私たちは、値の名前を返す必要がありますが、サインインする必要はありません。さびにおいて、関数は、式の値が、関数本体の端部である返します。もちろん、我々はまた、値を返すためにreturnキーワードを使用することができますが、ほとんどの関数は戻り値として最後の式にあります。ここでは、例を直接見:
fn main() {
let x = plus_one(5);
println!("x 的值是: {}", x);
}
fn plus_one(x: i32) -> i32 {
x + 1
}
ここだlet x = plus_one(5)
と等価let x = 6
。我々は、機能plus_oneを定義し、その戻り値の型I32は、返される値は、セミコロンではないのx + 1、です。
注記
それらのすべてがそうプログラム内のいくつかのメモを書き、プログラマがプログラムを簡単に他の人が理解することができ、書き込みしようとしてきました。これらのノートは、命令は、コンパイラによって無視されますが、それはソースコードを読む人のために非常に有用です。
サビでは、コメントがこれまでに行の最後まで、2つのスラッシュで始まります。
プロセス制御
ほとんどのプログラミング言語では、このコードを実行するコードのこの部分は、条件に依存するかどうかを継続的に実行するかどうかを、条件文が真であるかどうかに依存しては真であり続けました。このセクションでは、錆の判断を学び、2つの制御処理をサイクリング。
裁判官
決意の条件は、文の分岐コードの実行を決定します。
もし
すべての判断式は、条件式に続いて、場合に使用し始めています。私たちは、直接、例を見て:
fn main() {
let number = 3;
if number < 5 {
println!("条件为真");
} else {
println!("条件为假");
}
}
変数が数5よりも小さい場合には、印刷条件は、そうでない場合は、印刷条件が偽で、真実です。ここでは、また、キーワードの一致した場合について考えることができます。コードの条件が偽である主に提供するために、どのような他の表現、と言う、提供されていない場合、他の式は、プログラムが表現された場合にスキップします。
ヒント:後者の式はbool型、この時点とルビーのものでなければならない場合には、ジャバスクリプト言語が異なっています。
もしそうでありません
、他の多くの条件が書かれたコードの判断、例に直接見て組み合わせる他の場合、あれば我々はまた、使用することができます。
fn main() {
let number = 6;
if number % 4 == 0 {
println!("能被 4 整除");
} else if number % 3 == 0 {
println!("能被 3 整除");
} else if number % 2 == 0 {
println!("能被 2 整除");
} else {
println!("不能被 2, 3, 4 整除");
}
}
式は、コードの外観の厄介になる場合は、あまりにも多くの他の使用している場合は、一致のキーワードではなく、後でこのコンテンツを再導入とみなすことができます。
値はLETを使用して受信した場合
式であるならば、あなたは表現場合は、戻り値を受け取るためにlet文を使用することができますので。内容は、コードでは比較的簡単な、直接的な外観です。
fn main() {
let condition = true;
let number = if condition {
5
} else {
6
};
println!("结果是: {}", number);
}
結果が実行されています。
cargo run
Compiling hello_cargo v0.1.0 (/Users/shanpengfei/work/rust-work-space/study/hello_cargo)
Finished dev [unoptimized + debuginfo] target(s) in 0.23s
Running `target/debug/hello_cargo`
结果是: 5
そして、それ以外の戻り値の型は同じでなければならない場合。
循環
以下のために、私たちはそれぞれのを見て、一方で、ループ:サイクルについて、錆には、いくつかのループへの方法を提供しています。
ループ
コードは明示的に停止錆に語っまでキーワードループは、例えば、コードのブロックの後ろに繰り返し語ったさびを実行されます。
fn main() {
loop {
println!("重复打印");
}
}
ここでは、印刷繰り返し重复打印
、我々はCtrl + Cキーを使用してプログラムを終了するまで、これらの4つの単語を。カテゴリーは、ループのコード・ブロック内のループのうち使用休憩かもしれません。
受信した値を使用してループをしてみましょう
ループ式も値を返すことができ、かつ同じ式は、割り当てられた場合に文をできるようにします。式が戻っキーワードが続く破ることができます。例を見てください:
fn main() {
let mut counter = 0;
let result = loop {
counter += 1;
if counter == 10 {
break counter * 2;
}
};
println!("结果是 {}", result);
}
コードの結果は、比較的単純な20で、言うことはありません。
同時に
あなたは、キーワードを使用しながら、ループを実行する前に条件を決定する必要がある場合。条件がtrueの場合、実行ループは、ループ本体はまた、ブレークキーワードを停止するために使用することができます。一例ではこの直接見て:
fn main() {
let mut number = 3;
while number != 0 {
println!("{}!", number);
number -= 1;
}
println!("结束");
}
コンテンツおよび他の同様の言語のこの作品は、ここで説明されていないため。
ために
あなたは、配列を横断したい場合は、キーワードに使用されます。もちろん、あなたがキーワードを使用することができますが、キーワード間の例を見て:
fn main() {
let a = [10, 20, 30, 40, 50];
let mut index = 0;
while index < 5 {
println!("值是: {}", a[index]);
index += 1;
}
}
指数によると、5つの値、キーワードの例を見ての印刷配列を向けるだろう。
fn main() {
let a = [10, 20, 30, 40, 50];
for element in a.iter() {
println!("值是: {}", element);
}
}
これは次のように)(イテレータITERを使用している、もちろん、あなたは、RANGEキーワードを使用することができます。
fn main() {
for number in (1..4).rev() {
println!("{}!", number);
}
println!("结束");
}
REV()メソッドは、逆1,2,3,4 4,3,2,1変数です。
ようこそ、単一の研究では、鵬飛ノート