প্রকারের সাথে একটি ভেরিয়েবল দেওয়া Graphics, আমি কীভাবে এটিকে Graphics2Dস্কালায় কাস্ট করব ?
প্রকারের সাথে একটি ভেরিয়েবল দেওয়া Graphics, আমি কীভাবে এটিকে Graphics2Dস্কালায় কাস্ট করব ?
উত্তর:
পছন্দসই কৌশলটি প্যাটার্ন মিলটি ব্যবহার করা। এই আপনি অত্যন্ত শৃঙ্খলার ক্ষেত্রে পরিচালনা করতে যে প্রশ্নে মান পারবেন না দেওয়া ধরনের:
g match {
case g2: Graphics2D => g2
case _ => throw new ClassCastException
}
এই ব্লকটি asInstanceOf[Graphics2D]পদ্ধতির শব্দার্থ প্রতিরূপ তৈরি করে তবে বৃহত্তর নমনীয়তার সাথে। উদাহরণস্বরূপ, আপনি বিভিন্ন ধরণের জন্য বিভিন্ন শাখা সরবরাহ করতে পারেন, কার্যকরভাবে একই সময়ে একাধিক শর্তাধীন ক্যাসেট সম্পাদন করে। সবশেষে, ক্যাচ-অল অঞ্চলে আপনার সত্যিকারের ব্যতিক্রম ছোঁড়ার দরকার নেই, আপনিও ফিরে আসতে পারেন null(বা পছন্দসই None), অথবা আপনি কোনও ফলব্যাক শাখা প্রবেশ করতে পারেন যা বাইরে কাজ করে Graphics2D।
সংক্ষেপে, এটি সত্যিই যাওয়ার উপায়। এটি এর চেয়ে একটু সিনট্যাক্টিক্যালি ভারী asInstanceOf, তবে যুক্ত নমনীয়তা প্রায় সর্বদা এটির জন্য উপযুক্ত।
base match { case base @ MyConcrete(value) => base.something(value) } অবশ্যই, ছায়া কাটা optionচ্ছিক base। আপনি ঠিক তত সহজেই একটি ভিন্ন ভেরিয়েবল নাম ব্যবহার করতে পারেন।
val gResult = g match { case g2: Graphics2D => g2 case _ => throw new ClassCastException }
g.asInstanceOf[Graphics2D];
asInstanceOf, কারণ এটি স্ট্যাটিক টাইপ সিস্টেম থাকার উদ্দেশ্যকে পরাস্ত করে এবং ইয়াকি বোধ করে।
scala-swingউপাদানগুলি ব্যবহার করেন তবে