پاورشل برای برنامه‌نویسان

پاورشل برای برنامه‌نویسان

@programming_tips

درسنامه: آشنایی با Type Casting و Type Checking

امروز میخوایم بریم سراغ یکی از مباحث کلیدی در برنامه‌نویسی با PowerShell یعنی Type Casting (تبدیل نوع) و Type Checking (بررسی نوع).

درک این دو موضوع باعث میشه خیلی راحت‌تر داده‌ها رو مدیریت کنید و جلوی خطاهای غیرمنتظره رو بگیرید.


۱. Type Casting (تبدیل نوع داده)

گاهی لازمه نوع یک متغیر رو تغییر بدی. مثلاً ممکنه ورودی از کاربر به صورت رشته (string) بیاد، اما تو نیاز داری اون رو به عدد (int) یا بولین (bool) تبدیل کنی. در پاورشل میشه این کار رو به‌راحتی با قرار دادن نوع مورد نظر داخل براکت [] قبل از مقدار انجام داد.

مثال‌ها:

# تبدیل رشته به عدد صحیح
[int]$num = "123"
Write-Output ($num + 10)   # خروجی: 133

# تبدیل رشته به عدد اعشاری
[double]$pi = "3.14"
Write-Output ($pi * 2)     # خروجی: 6.28

# تبدیل عدد به رشته
[string]$age = 27
Write-Output ("Your age is " + $age)

# تبدیل به بولین
[bool]$flag1 = 0    # خروجی: False
[bool]$flag2 = 1    # خروجی: True

با این روش می‌تونی هر داده‌ای رو به نوعی که می‌خوای تبدیل کنی. البته اگر مقدار ناسازگار باشه، پاورشل خطا میده. مثلاً تبدیل "hello" به [int] امکان‌پذیر نیست.


۲. Type Checking (بررسی نوع داده)

برای اینکه بفهمی یک متغیر چه نوعی داره، می‌تونی از ویژگی .GetType() یا عملگر -is استفاده کنی. این کار کمک می‌کنه قبل از انجام عملیات مطمئن بشی که نوع داده درست هست.

مثال با .GetType():

$name = "Ali"
$age = 25

Write-Output $name.GetType().Name   # خروجی: String
Write-Output $age.GetType().Name    # خروجی: Int32

مثال با -is:

$var = 100

if ($var -is [int]) {
    Write-Output "This is an integer"
}

if ($var -isnot [string]) {
    Write-Output "This is not a string"
}

در اینجا:

  • -is بررسی می‌کنه آیا متغیر از نوع مشخص شده هست یا نه.
  • -isnot دقیقاً برعکس اون عمل می‌کنه.

۳. نکات مهم

  1. تبدیل خودکار (Implicit Casting):
  2. پاورشل خیلی وقت‌ها خودش نوع داده رو تشخیص میده. مثلاً اگر بنویسی:
$x = 5 + "10"
  1. پاورشل رشته "10" رو به عدد تبدیل می‌کنه و خروجی 15 میشه.
  2. تبدیل صریح (Explicit Casting):
  3. وقتی مطمئنی نوع داده باید تغییر کنه، بهتره از [type] استفاده کنی تا جلوی خطا یا ابهام رو بگیری.
  4. تبدیل به انواع پیچیده‌تر:
  5. حتی می‌تونی یک رشته رو به JSON یا تاریخ (DateTime) تبدیل کنی:
[datetime]$today = "2025-10-01"
Write-Output $today.DayOfWeek  # خروجی: Wednesday

۴. جمع‌بندی

  • Type Casting یعنی تبدیل یک نوع داده به نوع دیگه با استفاده از [type].
  • Type Checking یعنی بررسی نوع داده با .GetType() یا عملگرهای -is و -isnot.
  • پاورشل گاهی به صورت خودکار داده‌ها رو تبدیل می‌کنه، اما برای جلوگیری از خطا بهتره صریح باشی.

✨ تمرین پیشنهادی:

  1. رشته "42" رو به int و double تبدیل کن و عملیات ریاضی روش انجام بده.
  2. یک تاریخ به صورت رشته تعریف کن و اون رو به [datetime] تبدیل کن.
  3. متغیری بساز و بررسی کن آیا از نوع [string] هست یا نه.

Report Page