錆エントリ(3)_アンダー

このセクションでは、錆の言語を学ぶ变量、数据类型、函数、注释、流程控制これらの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 + 611リターンの表現です。
  • 式文、声明など6つの一部であるlet y = 66のリターン式の値。
  • また、関数呼び出し式です。
  • マクロ呼び出しも式です。
  • 新しいスコープを作成するために使用することは、{}も式です。

直接この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変数です。

ようこそ、単一の研究では、鵬飛ノート

おすすめ

転載: www.cnblogs.com/shanpengfei/p/11979343.html