মূল লেখায় যান

Primitive types

API summary (generated from the Beans source by npm run coverage): 17 types · 2 instance methods.

Primitive type হলো Beans-এর সবচেয়ে ছোট ধরনের value। এটা অন্য কোনো value দিয়ে বানানো না। প্রতিটা primitive সরাসরি (unboxed) generated code-এ থাকে, তাই এগুলো ব্যবহার করা সস্তা।

প্রতিটা binding-এর সাথে তার type লেখা থাকে। যেমন:

let x: int = 5
let ok: bool = true
let name: string = "beans"
Typeকী ধরে রাখেSize
unitকিছুই না; খালি value0 bytes
booltrue বা false1 byte
int64-bit signed পূর্ণসংখ্যা8 bytes
i8 i16 i32 i64নির্দিষ্ট চওড়ার signed পূর্ণসংখ্যা1, 2, 4, 8 bytes
uint64-bit unsigned পূর্ণসংখ্যা (word type)8 bytes
u8 u16 u32 u64নির্দিষ্ট চওড়ার unsigned পূর্ণসংখ্যা1, 2, 4, 8 bytes
byteu8-এর আরেক নাম1 byte
float64-bit IEEE double8 bytes
f32 f64নির্দিষ্ট চওড়ার float4, 8 bytes
decimalbase-10 নিখুঁত সংখ্যা32 bytes, align 16
stringimmutable UTF-8 text,

যে নাম গুলো জেনে রাখা দরকার

“যে নাম গুলো জেনে রাখা দরকার” সেকশন
  • int হলো i64-এর আসল রূপ। int লিখলে একটা signed 64-bit পূর্ণসংখ্যা পাওয়া যায়।
  • float আর f64 একই জিনিস।
  • byte আর u8 একই জিনিস।
  • uint আর int হলো word type। Beans-এ usize বা isize নেই; signed word-sized সংখ্যার জন্য int ব্যবহার করা হয়, আর unsigned-এর জন্য uint

unit হলো খালি value। এটা 0 byte নেয়। যে function কিছুই return করে না, সেটা unit return করে। এটা খুব কমই হাতে লিখতে হয়।

bool হলো true বা false, এক byte।

decimal হলো base-10 নিখুঁত সংখ্যা। যেসব জায়গায় binary-float-এর rounding error হলে ভুল হবে — যেমন টাকা-পয়সা — সেখানে এটা কাজে লাগে। এটা 32 byte নেয়, আর 16-তে align হয়।

decimal শুধু সেই সব target-এ থাকে যেগুলো এটা support করে। thumbv7em-none-eabi আর riscv32-unknown-none-elf-এ এটা নেই। নিয়মগুলো Numbers আর decimal-এ পড়ে নিন।

string হলো immutable UTF-8 text। একবার বানানোর পর আর বদলায় না। প্রতিটা method দেখতে string পড়ুন। বাড়তে পারা, বদলানো যায় এমন byte buffer লাগলে Bytes দেখুন।

এমনকি একটা সাধারণ number বা string literal-এরও method আছে। literal-এর ওপর সরাসরি method call করা যায়:

let a: int = (-5).abs()
let b: float = 3.7.round()
let c: Result<int> = "42".to_int()