Adelieでは全てのプリミティブ型を.Net型に置き換えることができます。
Adelie | 範囲 | サイズ | .NET型 |
i32 | -2,147,483,648 ~ 2,147,483,647 | 符号付き32ビット整数 | System.Int32 |
i64 | -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 | 符号付き64ビット整数 | System.Int64 |
整数型は10進数での指定ができます。
接尾辞を付けない場合の規定はi32
になります。
let a: i32 = 42;
Adelie | おおよその範囲 | 有効桁数 | サイズ | .NET型 |
f32 | ±1.5 x 10−45 から ±3.4 x 1038 | ~6-9 桁 | 4 バイト | System.Single |
接尾辞を付けない場合の規定はf64
になります。
let a: f32 = 3.14f32;
let b = 1.0;
Adelie | .NET型 |
bool | System.Boolean |
true
またはfalse
を指定することができます。
let a: bool = true;
let a: bool = false;
Adelie | 範囲 | サイズ | .NET型 |
char | U+0000 ~ U+FFFF | 16ビット | System.Char |
char
型は内部でUnicode UTF-16文字を表します。
「'
(シングルクォート)」で囲った一文字を指定できます。
let a: char = 'a';
let a: char = '☺';
Adelie | .NET型 |
struct | System.ValueType |
// 構造体定義
struct Rectangle {
width: i32,
height: i32,
}
// メソッド定義
impl Rectangle {
fn new(w: i32, h: i32) -> Rectangle {
Rectangle {
w,
h,
}
}
fn area(&self) -> i32 {
self.width * self.height
}
}
fn main() {
// インスタンス化
let rect1: Rectangle = Rectangle::new(30, 50);
assert_eq!(rect1.area(), 150);
}
Adelie | .NET型 |
enum | System.Enum |
内部では「0」からの連番を振られた名前付き定数になります。
enum Color {
Red,
Green,
Blue,
}
fn main() {
let blue: Color = Color::Blue;
assert_eq!(blue as i32, 2);
}
Adelie | .NET型 |
string | System.String |
Adelieではstring
型はUTF-16のシーケンスを表します。
let a: string = "foo";
Adelie | .NET型 |
Box | System.Object |
let a: Box<i32> = Box::new(42);
assert_eq!(*a, 42);
Adelie | .NET型 |
Vec | System.Collections.Generic.List |
let mut a: Vec<i32> = Vec::new();
a.push(42);
assert_eq!(a[0], 42);
Adelie | .NET型 |
class | System.Object |
後述するextern
ブロック内でのみ宣言が可能です。
extern {
class Foo {
bar: i32
}
}