پاورشل برای برنامهنویسان
@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دقیقاً برعکس اون عمل میکنه.
۳. نکات مهم
- تبدیل خودکار (Implicit Casting):
- پاورشل خیلی وقتها خودش نوع داده رو تشخیص میده. مثلاً اگر بنویسی:
$x = 5 + "10"
- پاورشل رشته
"10"رو به عدد تبدیل میکنه و خروجی15میشه. - تبدیل صریح (Explicit Casting):
- وقتی مطمئنی نوع داده باید تغییر کنه، بهتره از
[type]استفاده کنی تا جلوی خطا یا ابهام رو بگیری. - تبدیل به انواع پیچیدهتر:
- حتی میتونی یک رشته رو به JSON یا تاریخ (
DateTime) تبدیل کنی:
[datetime]$today = "2025-10-01" Write-Output $today.DayOfWeek # خروجی: Wednesday
۴. جمعبندی
- Type Casting یعنی تبدیل یک نوع داده به نوع دیگه با استفاده از
[type]. - Type Checking یعنی بررسی نوع داده با
.GetType()یا عملگرهای-isو-isnot. - پاورشل گاهی به صورت خودکار دادهها رو تبدیل میکنه، اما برای جلوگیری از خطا بهتره صریح باشی.
✨ تمرین پیشنهادی:
- رشته
"42"رو بهintوdoubleتبدیل کن و عملیات ریاضی روش انجام بده. - یک تاریخ به صورت رشته تعریف کن و اون رو به
[datetime]تبدیل کن. - متغیری بساز و بررسی کن آیا از نوع
[string]هست یا نه.