নিম্নলিখিত ফাংশন নিন:
def fMatch(s: String) = {
s match {
case "a" => println("It was a")
case _ => println("It was something else")
}
}
এই প্যাটার্নটি সুন্দরভাবে মেলে:
scala> fMatch("a")
It was a
scala> fMatch("b")
It was something else
আমি যা করতে সক্ষম হতে চাই তা হল:
def mMatch(s: String) = {
val target: String = "a"
s match {
case target => println("It was" + target)
case _ => println("It was something else")
}
}
এটি নিম্নলিখিত ত্রুটিটি দেয়:
fMatch: (s: String)Unit
<console>:12: error: unreachable code
case _ => println("It was something else")
আমার ধারণা এটি কারণ এটি মনে করে যে লক্ষ্যটি আসলে এমন একটি নাম যা আপনি ইনপুট যা হ'ল তা নির্ধারণ করতে চান। দুটি প্রশ্ন:
কেন এই আচরণ? কেস কেবল উপযুক্ত স্কোরের ক্ষেত্রে বিদ্যমান ভেরিয়েবলগুলি সন্ধান করতে পারে না যা উপযুক্ত টাইপ করে এবং সেগুলি প্রথমে ব্যবহার করে এবং যদি কোনওটি পাওয়া যায় না, তবে লক্ষ্যটিকে প্যাটার্নম্যাচ করার জন্য একটি নাম হিসাবে বিবেচনা করবে?
এটির জন্য কি কোনও কার্যকারিতা রয়েছে? ভেরিয়েবলের সাথে প্যাটার্ন মিলানোর কোনও উপায়? শেষ পর্যন্ত কেউ যদি স্টেটমেন্টটি বড় ব্যবহার করতে পারে তবে ম্যাচের ক্ষেত্রে আরও মার্জিত।