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
}
}