Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Chapter 3.3 関数 #6

Open
euledge opened this issue Feb 12, 2019 · 2 comments
Open

Chapter 3.3 関数 #6

euledge opened this issue Feb 12, 2019 · 2 comments

Comments

@euledge
Copy link
Owner

euledge commented Feb 12, 2019

3.3.1 関数の引数

関数の宣言において、引数を持つ関数定義ができますが、その引数は型を宣言する必要がある。

fn another_function(x: i32) {
    println!("The value of x is: {}", x);
}
@euledge
Copy link
Owner Author

euledge commented Feb 12, 2019

3.3.2

関数の本体は、文を並べて書くが最後に式を置くか、文を置くという構成になる。

fn main() {
    let x = (let y = 6);
}

文は値を返さないので、上記の例で let y = 6 は文なのでエラーになる。

式は何かに評価されるもの

  • 例えば 簡単な演算 5 + 6 は 11 に評価される式。
  • 数値や、値を持つ変数自体も評価される式。
  • 関数呼び出しも式 (例えば let x = function() のように使われる)
  • マクロ呼び出しも式
  • ブロック {} も式
let y = {
    let x = 3;
    x +1
}

と書いた場合 {} は 4 に評価される式となる。
x + 1にセミコロンをつけてしまうと文となるので {} は値を返さないことに注意!!

let y = {
    let x = 3;
    x +1;
}

@euledge
Copy link
Owner Author

euledge commented Feb 12, 2019

3.3.3 戻り値のある関数

戻り値を返す関数は -> の後ろに戻り値の型を記載する。

fn five() -> i32 {
    5
}

関数は暗黙的に最後の式の値を返すので、 return を書かなくても上記の関数は 5 を返す。

euledge added a commit that referenced this issue Feb 12, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant