14. Type Conversion — اقسام کی تبدیلی
Difficulty: Intermediate — متوسط
Time: ~20 minutes
Converting to Number — عدد میں تبدیل
عدد() converts to integer:
لکھو(عدد("42")); // 42
لکھو(عدد(" 100 ")); // 100 (ignores whitespace)
لکھو(عدد(3.9)); // 3 (truncates decimal)
لکھو(عدد(سچ)); // 1
لکھو(عدد(جھوٹ)); // 0
لکھو(عدد("abc")); // nan (failed — NaN)
اعشاریہ() converts to float:
اردو:
عدد()صحیح عدد کے لیے (اعشاری حصہ کاٹ دیتا ہے)۔اعشاریہ()اعشاری عدد کے لیے۔ تبدیلی ناکام ہو توnanملتا ہے۔
Converting to String — متن میں تبدیل
متن() converts anything to a string:
لکھو(متن(42)); // "42"
لکھو(متن(3.14)); // "3.14"
لکھو(متن(سچ)); // "True"
لکھو(متن(جھوٹ)); // "False"
لکھو(متن(خالی)); // "None"
لکھو(متن([1, 2, 3])); // "[1, 2, 3]"
اردو: ہر قسم کو
متن()سے متن میں بدلا جا سکتا ہے — عدد، بولین، فہرست سب۔
Converting to Boolean — بولین میں تبدیل
بولین() shows what is "truthy" or "falsy":
// Falsy values — جھوٹ قدریں
لکھو(بولین(0)); // False
لکھو(بولین(0.0)); // False
لکھو(بولین("")); // False
لکھو(بولین([])); // False
لکھو(بولین({})); // False
لکھو(بولین(خالی)); // False
// Truthy values — سچ قدریں
لکھو(بولین(1)); // True
لکھو(بولین(-1)); // True
لکھو(بولین("0")); // True (non-empty string!)
لکھو(بولین("اردو")); // True
لکھو(بولین([0])); // True (non-empty list!)
اردو:
0,"",[],{},خالی— یہ جھوٹ ہیں۔ باقی سب سچ۔ نوٹ:"0"(متن صفر) سچ ہے کیونکہ خالی نہیں۔
Checking Types — قسم جانچنا
قسم() returns the Urdu type name:
لکھو(قسم(42)); // عدد
لکھو(قسم(3.14)); // عدد
لکھو(قسم("اردو")); // متن
لکھو(قسم(سچ)); // بولین
لکھو(قسم(خالی)); // خالی
لکھو(قسم([1, 2])); // فہرست
لکھو(قسم({ ک: "ق" })); // شے
Checking for NaN — ناقص عدد جانچنا
Safe conversion pattern — محفوظ تبدیلی:
فنکشن محفوظ_عدد(م, ڈیفالٹ = 0) {
متغیر ق = عدد(م);
اگر (نان_ہے(ق)) {
واپس ڈیفالٹ;
}
واپس ق;
}
لکھو(محفوظ_عدد("100")); // 100
لکھو(محفوظ_عدد("abc")); // 0 (default)
لکھو(محفوظ_عدد("abc", -1)); // -1 (custom default)
Implicit Conversions — خودکار تبدیلی
Some conversions happen automatically:
// Number + String → String (via template literal)
متغیر عمر = 25;
لکھو(`عمر: ${عمر}`); // عمر: 25 ✓
// But + operator with number + string:
// لکھو("عمر: " + عمر); // May error — use متن() to be safe
لکھو("عمر: " + متن(عمر)); // عمر: 25 ✓
Conversion Summary — خلاصہ
| Function | From | To | Example |
|---|---|---|---|
عدد(ق) |
str, float, bool | integer | عدد("42") → 42 |
اعشاریہ(ق) |
str, int, bool | float | اعشاریہ("3.14") → 3.14 |
متن(ق) |
any | string | متن(100) → "100" |
بولین(ق) |
any | boolean | بولین(0) → جھوٹ |
قسم(ق) |
any | type name string | قسم(42) → "عدد" |
Practical Example: Form Validation — عملی مثال: فارم جانچ
فنکشن فارم_جانچیں(نام_م, عمر_م, ای_میل) {
متغیر غلطیاں = [];
اگر (نہیں نام_م یا نام_م.چھاٹو() == "") {
غلطیاں.شامل("نام خالی ہے");
}
متغیر عمر = عدد(عمر_م);
اگر (نان_ہے(عمر)) {
غلطیاں.شامل("عمر عدد ہونی چاہیے");
} ورنہ_اگر (عمر < 1 یا عمر > 120) {
غلطیاں.شامل(`غلط عمر: ${عمر}`);
}
اگر (نہیں ای_میل.شامل_ہے("@")) {
غلطیاں.شامل("ای میل غلط ہے");
}
واپس غلطیاں;
}
متغیر غ = فارم_جانچیں("احمد", "25", "ahmed@example.com");
لکھو(غ.لمبائی == 0 ? "فارم درست" : غ); // فارم درست
متغیر غ2 = فارم_جانچیں("", "abc", "invalid");
لکھو(غ2); // ['نام خالی ہے', 'عمر عدد ہونی چاہیے', 'ای میل غلط ہے']
Key Points — اہم نکات
عدد(ق)→ integer;اعشاریہ(ق)→ floatمتن(ق)→ string (works on any type)بولین(ق)→سچorجھوٹقسم(ق)→ returns Urdu type nameنان_ہے(ق)→ check if conversion failed- Always check
نان_ہے()afterعدد()on user input
اردو:
عدد()عدد میں،متن()متن میں،بولین()بولین میں،قسم()قسم جاننا،نان_ہے()ناکام تبدیلی جانچنا۔