সম্পত্তি নাম সংক্ষিপ্তকরণ
দুঃখের বিষয়, পরামিতিগুলির বিপরীতে, বৈশিষ্ট্য / পদ্ধতিগুলি (কোনও বিন্দুর সাথে অ্যাক্সেসযুক্ত যে কোনও কিছু .
) সাধারণত তার দ্ব্যর্থহীন আকারে ছোট করা যায় না।
তবে নির্দিষ্ট কিছু সেমিডলেটগুলি সম্পত্তির নামগুলিতে পরিচালনা করতে পারে এবং ওয়াইল্ডকার্ড নিতে পারে এবং এর অল্প-পরিচিত পরামিতি সেট রয়েছে %
এবং ?
এটি কার্যকর হতে পারে।
সাধারণত আমরা একটি স্ক্রিপ্টব্লেকে পাস করি এবং সাথে আইটেমটি উল্লেখ করি $_
তবে এর আরও একটি রূপ রয়েছে যা একটি সম্পত্তির নাম নেয় এবং এটি একটি ওয়াইল্ডকার্ড গ্রহণ করে।
$o|select Le*
$o|%{$_.Length}
.Length
V3 ম্যাজিকের মতো আমরা ব্যবহার করতে পারি না যা সাধারণত অ্যারেতে কাজ করবে কারণ Length
অ্যারে নিজেই একটি সম্পত্তি, সুতরাং উপরের দুটি পৃথক সদস্যের দৈর্ঘ্য পেতে ব্যবহার করা যেতে পারে। select
আসে একটু খাটো বিট।
তবে %
সরাসরি কোনও সম্পত্তির নাম নিতে পারে এবং সেই মানটি ফিরিয়ে দিতে পারে:
$a|% Length
যা ওয়াইল্ডকার্ড দিয়ে ছোট করা যেতে পারে। ওয়াইল্ডকার্ডকে অবশ্যই একটি একক সম্পত্তি (বা পদ্ধতি, এরপরে আরও) সমাধান করতে হবে, সুতরাং এটি কোন সদস্যকে সমাধান করতে পারে তা নির্দেশ করে সঠিকভাবে ত্রুটি ছুঁড়ে ফেলবে,
ক্ষেত্রে Length
, Le*
সাধারণত সবচেয়ে কম হয়। এমনকি একটি একক স্ট্রিংয়েও, সম্পত্তিটি ব্যবহারের চেয়ে এই পদ্ধতিটি 1 বাইট ছোট।
$a.Length # 9 #(doesn't work on array)
$a|%{$_.Length} # 15
$a|% Le* # 8
তবে আপনি এটি দিয়ে কী করছেন তার উপর নির্ভর করে এটি আরও খারাপ হতে পারে। আপনি এটি করতে পারেন $a.Length*5
তবে পাইপলাইন এক্সপ্রেশন দিয়ে এটি করার জন্য আপনাকে এটি আবৃত করতে হবে ($a|% Le*)*5
; এটি যদি কোনও অ্যারের বিরুদ্ধে হয় তবে এখনও এটি মূল্যবান হতে পারে তবে মূল বিষয়টি হ'ল এটি সর্বদা সরল প্রতিস্থাপন হিসাবে উপযুক্ত নয়।
এটি পদ্ধতিগুলির সাথেও কাজ করে এবং আপনি ()
পুরো নামটি একই দৈর্ঘ্য করে তবে কখনও কখনও এটি মোড়ানো সম্পর্কে উপরের মত একই বিধিনিষেধটি ছেড়ে দিতে পারেন । পদ্ধতির অবশ্যই একটি ওভারলোড থাকতে হবে যা কোনও প্যারামিটার নেয় না (আপনি পদ্ধতির নামের পরে এগুলি যুক্তি দিয়ে পাস করতে পারেন, যা সত্যিই দুর্দান্ত):
$a.ToUpper() # 12
$a|% *per # 9
যুক্তি সহ:
'gaga'-replace'g','r' # 21
'gaga'|% *ce g r # 16
এগুলি কঠোরভাবে একই রকম হয় না যে -replace
অপারেটর একটি রিজেক্স প্রতিস্থাপন করে, তবে আপনি যদি কেবল একটি স্ট্রিং প্রতিস্থাপন করেন তবে এটি (এখন) পদ্ধতিটি ব্যবহার করা সংক্ষিপ্ত হতে পারে; এটি স্ট্রিংগুলি পদ্ধতি আর্গুমেন্টের পরিবর্তে সেমিডলেট আর্গুমেন্ট হিসাবে সহায়তা করে যাতে তাদের উদ্ধৃতি দেওয়ার প্রয়োজন হয় না।
যেখানে-বস্তুর বৈশিষ্ট্য
?
(আংশিক) সম্পত্তির নামও নিতে পারে এবং এতে একটি "অপারেটর" প্রয়োগ করতে পারে (স্যুইচ প্যারামিটার আকারে)। আবার Where-Object
সম্পত্তির নামটি যথেষ্ট দীর্ঘ এবং অনন্য হলে মান স্ক্রিপ্টব্লক পদ্ধতির ব্যবহারের চেয়ে কম হতে পারে ।
$a|?{$_.Length-gt5} # 19
$a|? Le* -GT 5 # 14
($a|% Le*)-gt5 # 14 - Lengths, not objs