প্রকারের সাথে একটি ভেরিয়েবল দেওয়া 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
উপাদানগুলি ব্যবহার করেন তবে