পাওয়ারশেল 3 এর আগে
পাওয়ারশেলের এক্সটেনসিবল টাইপ সিস্টেম মূলত আপনাকে কংক্রিটের ধরণের তৈরি করতে দেয়নি আপনি নিজের প্যারামিটারে যা করেছেন তার বিরুদ্ধে পরীক্ষা করতে পারেন। আপনার যদি সেই পরীক্ষার প্রয়োজন না হয় তবে আপনি উল্লিখিত অন্য যে কোনও পদ্ধতিতে ভাল আছেন।
আপনি একটি প্রকৃত যে ধরনের আপনার কাছে বা সঙ্গে কাস্ট করতে পারেন আপনার উদাহরণ লিপিতে যেমন টাইপ-যাচাই চান তবে ... এটা করতে পারবে না C # এটা লেখার বা VB.net এবং কম্পাইল ছাড়া করা। পাওয়ারশেল 2-এ, আপনি এটিকে বেশ সাদৃশ্য করতে "অ্যাড-টাইপ" কমান্ডটি ব্যবহার করতে পারেন:
add-type @"
public struct contact {
public string First;
public string Last;
public string Phone;
}
"@
.তিহাসিক দ্রষ্টব্য : পাওয়ারশেল 1 এ এটি আরও শক্ত ছিল। আপনাকে ম্যানুয়ালি কোডডম ব্যবহার করতে হয়েছিল, পশকোড.অর্গ.এ একটি নতুন পুরানো ফাংশনরয়েছে যা সাহায্য করবে। আপনার উদাহরণটি হয়ে যায়:
New-Struct Contact @{
First=[string];
Last=[string];
Phone=[string];
}
ব্যবহার করে Add-Type
বা New-Struct
আপনাকে প্রকৃতপক্ষে আপনার ক্লাসটি পরীক্ষা param([Contact]$contact)
করতে দেয় এবং নতুন ব্যবহার করে আরও কিছু করতে $contact = new-object Contact
দেয় ...
পাওয়ারশেল 3 এ
আপনি যদি "সত্য" ক্লাসের প্রয়োজন না পড়েন যার জন্য আপনি কাস্ট করতে পারেন তবে আপনাকে স্টিভেন এবং অন্যরা উপরে যেভাবে অ্যাড-মেম্বার দেখিয়েছেন তা ব্যবহার করতে হবে না ।
পাওয়ারশেল 2 যেহেতু আপনি নতুন-অবজেক্টের জন্য-প্রপার্টি প্যারামিটার ব্যবহার করতে পারেন:
$Contact = New-Object PSObject -Property @{ First=""; Last=""; Phone="" }
এবং পাওয়ারশেল 3-তে, আমরা PSCustomObject
টাইপনাম যুক্ত করতে এক্সিলিটরটি ব্যবহার করার ক্ষমতা পেয়েছি :
[PSCustomObject]@{
PSTypeName = "Contact"
First = $First
Last = $Last
Phone = $Phone
}
আপনি এখনও কেবল একটি একক বস্তু পেয়ে যাচ্ছেন, সুতরাং New-Contact
প্রতিটি বস্তু একইরূপে বেরিয়ে আসে তা নিশ্চিত করার জন্য আপনার একটি ফাংশন করা উচিত তবে আপনি এখন সহজেই একটি বৈশিষ্ট্য সহ একটি প্যারামিটার সাজিয়ে একটি পরামিতি "এই" প্যারামিটারটি যাচাই করতে পারবেন PSTypeName
:
function PrintContact
{
param( [PSTypeName("Contact")]$contact )
"Customer Name is " + $contact.First + " " + $contact.Last
"Customer Phone is " + $contact.Phone
}
পাওয়ারশেল 5 এ
পাওয়ারশেল ৫-এ সমস্ত কিছু পরিবর্তিত হয় এবং অবশেষে আমরা পেয়েছি class
এবং enum
প্রকার নির্ধারণের জন্য ভাষা কীওয়ার্ড হিসাবে পেয়েছি ( struct
ঠিক আছে তবে তা নেই ):
class Contact
{
[ValidateNotNullOrEmpty()][string]$First
[ValidateNotNullOrEmpty()][string]$Last
[ValidateNotNullOrEmpty()][string]$Phone
Contact($First, $Last, $Phone) {
$this.First = $First
$this.Last = $Last
$this.Phone = $Phone
}
}
আমরা ব্যবহার না করে অবজেক্ট তৈরি করার একটি নতুন উপায়ও পেয়েছি New-Object
: [Contact]::new()
- বাস্তবে, আপনি যদি নিজের শ্রেণিটি সহজ করে রাখেন এবং কোনও কনস্ট্রাক্টরকে সংজ্ঞায়িত না করেন তবে আপনি হ্যাশটেবল castালাই করে অবজেক্টগুলি তৈরি করতে পারেন (যদিও বিনা কনস্ট্রাক্টর ছাড়া উপায় নেই) প্রয়োগ করার জন্য যে সমস্ত সম্পত্তি সেট করা আবশ্যক):
class Contact
{
[ValidateNotNullOrEmpty()][string]$First
[ValidateNotNullOrEmpty()][string]$Last
[ValidateNotNullOrEmpty()][string]$Phone
}
$C = [Contact]@{
First = "Joel"
Last = "Bennett"
}