Rustの基本文法(関数) #Rust 您所在的位置:网站首页 rust基本玩法 Rustの基本文法(関数) #Rust

Rustの基本文法(関数) #Rust

2024-02-24 19:51| 来源: 网络整理| 查看: 265

公式サイト

関数

関数を定義するためfnキーワードにて新しい関数を定義する。 main関数は、多くのプログラムの最初に実行される関数(エントリーポイント)になる。 関数と変数の命名規則は、スネークケースを使うことが慣例になる。

💡 Rustのコンパイラはどこで定義されているかは気にしない。どこかで定義されているかを気にする。

サンプルコード)

fn main() { println!("Hello, world!"); another_function(); } fn another_function() { println!("Another function."); // 別の関数 }

実行結果)

$ cargo run Compiling basic_syntax v0.1.0 (/home/xxxxx/workspace/rust/xxxxx) Finished dev [unoptimized + debuginfo] target(s) in 0.86s Running `target/debug/basic_syntax` Hello, world! Another function.

引数を定義

引数を持つように定義することが可能。 関数に引数があると、実際の値を渡すことができる。 仮引数(関数内で定義している引数)と実引数(関数の呼び出しもとにて定義している引数)にて定義する必要がある。

💡 仮引数を定義する場合、データ型を定義することが必須になる。 // 例) fn print_label( value: i32, label : char ) { }

関数は、引数を持つようにも定義できます。引数とは、関数シグニチャの一部になる特別な変数のことです。 関数に引数があると、引数の位置に実際の値を与えることができます。 技術的にはこの実際の値は 実引数と呼ばれますが、普段の会話では、仮引数("parameter")と実引数("argument")を関数定義の変数と関数呼び出し時に渡す実際の値、 両方の意味に区別なく使います

サンプルコード)

fn main() { print_labeled_measurement(5, 'h'); } fn print_labeled_measurement(value: i32, unit_label: char) { println!("The measurement is: {}{}", value, unit_label); }

実行結果)

$ cargo run Compiling basic_syntax v0.1.0 (/home/xxxxx/workspace/rust/xxxxx) Finished dev [unoptimized + debuginfo] target(s) in 0.14s Running `target/debug/basic_syntax` The measurement is: 5h

戻り値のある関数 関数を呼び出したコードに値を返すことができる。戻り値に矢印(->)の後にデータ型を宣言する。 Rustの場合、関数の戻り値は関数本体ブロックの最後の式が値になる。 returnキーワードにて関数から早期のリターンを使用して、値を使用することもできないことはない。 多くの場合は、関数の最後の式を暗黙に返す。

サンプルコード)

fn main() { let x = plus_one(5); println!("The value of x is: {}", x); } fn plus_one(x: i32) -> i32 { x + 1 }

実行結果)

$ cargo run Compiling basic_syntax v0.1.0 (/home/xxxxx/workspace/rust/xxxxx) Finished dev [unoptimized + debuginfo] target(s) in 0.14s Running `target/debug/basic_syntax` The value of x is: 6

関数本体は、文と式を含む

Rustは式指向言語になる。 文と式とあり、違いについて公式にて説明されている。

文とは、なんらかの動作をして値を返さない命令です。 式は結果値に評価されます。

例えば、letキーワードを使用して変数に値を代入することは文になる。

fn main() { let y = 6; }

関数の定義についても同じく文になる。 そのため、文は値を返さない。そうなると戻り値を定義した場合は式を入れる必要がある。 ※下記サンプルコードのanother_function()のx + 1を消した場合、エラーが発生する。 サンプルコード)

fn main() { println!("Hello, world!"); let x = another_function(); println!("{}",x) } fn another_function()->i32 { let x = 10; x + 1 }

実行結果)

$ cargo run Compiling basic_syntax v0.1.0 (/home/xxxxx/workspace/rust/xxxxx) Finished dev [unoptimized + debuginfo] target(s) in 0.13s Running `target/debug/basic_syntax` Hello, world! 11

式は、文の一部になる。 新しいスコープを使用するブロック{ }も同じく式になる。 サンプルコード)

fn main() { let y = { let x = 3; x + 1 }; println!("The value of y is: {}", y); }

実行結果)

$ cargo run Compiling basic_syntax v0.1.0 (/home/xxxxx/workspace/rust/xxxxx) Finished dev [unoptimized + debuginfo] target(s) in 0.16s Running `target/debug/basic_syntax` The value of y is: 4

上記のコードlet x = 3という文は値を返さない。 また、x + 1に注意が必要になる。式は終端にセミコロンを含まない。 式の終端にセミコロンを付けたら文を変えてしまう。そして、文は値を返さない。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有