プレゼン20分くらい+議論10分位で18:30前後終了を目指します。
変数の宣言にはlet
を使用します
リテラルを代入する場合には型推論により自動的に型が決定します
let a = 10;
Rustの変数宣言はイミュータブル(=不変)です
fn main() {
let x = 5;
println!("The value of x is: {}", x);
x = 6; // この行はエラーになる
println!("The value of x is: {}", x);
}
可変の変数にはmut
を付けます
fn main() {
let mut x = 5;
println!("The value of x is: {}", x);
x = 6;
println!("The value of x is: {}", x);
}
constキーワードで定数を定義可能
constで宣言された変数にmutをつけて可変にすることはできません
const MAX_SPEED = 120 //km/s
シャドーイング:変数名は同じまま新しい変数としてメモリ確保する
fn main() {
let x = 5;
let x = x + 1; // 5 + 1 = 6がxに代入
let x = x * 2; // 6 * 2 = 12がxに代入
println!("The value of x is: {}", x);
}
Rustは静的型付け言語です。
型は変数名の後に:を付けて記述します。
let 変数名:型 = 代入する値
例えばこんな感じです
let some_var: u32 = "42".parse().expect("Not a number");
プリミティブなデータ型はいくつか有ります
(プログラム書いてると覚えるので詳細は略)
| 型 | 記述 |
| –––– | –––– | –––– |
| 整数型符号有 | i8,i16,i32,i64,isize |
| 整数型 符号無 | u8,u16,u32,u64,usize |
| 不動点小数 | f32,f64 |
| 論理値 | bool |
| 文字 | '' | |
| タプル | (i32, f64, u8) |
| 配列 | [1,2,3,4] |
配列は固定長です
「文字列無いな」と思った方、文字列は少々複雑なので8章でやります。
数値リテラルは以下の記述ができます
数値リテラル | 例 |
---|---|
10進数 | 98_222 |
16進数 | 0xff |
8進数 | 0o77 |
2進数 | 0b1111_0000 |
バイト(u8だけ) | b'A' |
一番基本的な関数定義
fn plus_f(x: i32 , y: i32) -> i32 { x + y // セミコロンが無い場合戻値扱い }
一番基本的な関数定義
fn 関数名(変数: 型) -> 戻値の型 { (略) }
if式 カッコが無いのがカッコイイ!
fn main() { let number = 3; if number < 5 { println!("condition was true"); // 条件は真でした } else { println!("condition was false"); // 条件は偽でした } }
if式です
式なのでlet文中で使える
fn main() { let condition = true; let number = if condition { 5// 戻値を代入できる } else { 6 }; println!("The value of number is: {}", number); }
↓はエラー出てしまいます。型は一致させる!
fn main() { let condition = true; let number = if condition { 5// 戻値 } else { "six" }; println!("The value of number is: {}", number); }
else if
も可能ですが、6章のテーマであるmatch式を使ったほうがスマートです
if number % 4 == 0 {
// 数値は4で割り切れます
println!("number is divisible by 4");
} else if number % 3 == 0 {
// 数値は3で割り切れます
println!("number is divisible by 3");
} else if number % 2 == 0 {
// 数値は2で割り切れます
println!("number is divisible by 2");
} else ....(略)
ループは以下の3つ
loop | 無限ループ |
while | 条件でループ |
for | イテレータ回す |
loop
loop { //無限ループ }
while
fn main() {
let a = [10, 20, 30, 40, 50];
let mut index = 0;
while index < 5 {
println!("the value is: {}", a[index]);
index = index + 1;
}
}
for
fn main() {
let a = [10, 20, 30, 40, 50];
for element in a.iter() {
println!("the value is: {}", element);
}
}
習うより慣れろ!
以下の課題やってみましょう。
参考までに僕が書いたプログラムを置いておきます
ココからどうぞ