স্ক্যালায় অ্যাপ বৈশিষ্ট্য এবং প্রধান পদ্ধতি ব্যবহারের মধ্যে পার্থক্য


87

পার্থক্য কি

object Application extends App {
   println("Hello World")
}

এবং

object Application {
    def main(args: Array[String]): Unit = {
        println("Hello World");
    }
}


4
অ্যাপাচি স্পার্ক কাজের ক্ষেত্রে ডকুমেন্টেশনে বলা হয়েছে যে "অ্যাপ্লিকেশনগুলিকে স্কালা.অ্যাপ বাড়ানোর পরিবর্তে একটি প্রধান () পদ্ধতি নির্ধারণ করা উচিত sc
লিও

উত্তর:


64

অ্যাপ বৈশিষ্ট্যটি কার্যকর করা যায় এমন স্কালাল প্রোগ্রাম তৈরির একটি সুবিধাজনক উপায়। মূল পদ্ধতির পরিবর্তনের সাথে পার্থক্য হ'ল (সুস্পষ্ট সিনট্যাকটিক পার্থক্য বাদে) অ্যাপ্লিকেশন বৈশিষ্ট্যটি বিলম্বিত ইনিটালাইজেশন বৈশিষ্ট্যটি ব্যবহার করে।

২.৯-এর জন্য প্রকাশিত নোটগুলি থেকে (দেখুন http://www.scala-lang.org/old/node/9483 )

অ্যাপ বৈশিষ্ট্যের উত্তরাধিকার সূত্রে প্রাপ্ত বস্তুগুলি উত্তরাধিকারসূত্রে প্রাপ্ত মূল পদ্ধতির অংশ হিসাবে পুরো শরীরকে সম্পাদন করতে স্কেলা ২.৯ এর বিলম্বিত সূচনা বৈশিষ্ট্যটি ব্যবহার করে।

অ্যাপ্লিকেশন স্কিমের আর একটি নতুন বৈশিষ্ট্য হ'ল কমান্ড লাইন আর্গুমেন্টগুলি এখন আরগস মান (যা বৈশিষ্ট্য অ্যাপ থেকে উত্তরাধিকার সূত্রে প্রাপ্ত) এর মাধ্যমে অ্যাক্সেসযোগ্য


আমি কী বুঝতে পেরেছি যে অ্যাপের বৈশিষ্ট্যের সুবিধা ছাড়াই, এই (অ্যাপ্লিকেশন) অবজেক্টটি অন্য কোনও স্কেল অবজেক্টের মতো কাজ করে না - এন্ট্রি পয়েন্ট হ'ল mainপদ্ধতি এবং শরীর প্রত্যাশিতভাবে কার্যকর হয় নি। মূল প্রবেশের পরে কোনও সময়ে এটি কার্যকর করা হয়?
রিচার্ড সিটজে

@ রিচার্ডসিটজে বৈশিষ্ট্য জাদুকরীতে আপনার বস্তুর সাথে মিশ্রিত করার একটি mainপদ্ধতি রয়েছে । বিলম্বিত সূচনাটি আপনার বস্তুর শৃঙ্খলা বাহিনীকে নির্বাহ করে the AppApplicationApplication
এমিল এইচ

4

এই দুটি ক্ষেত্রে স্কাল স্ক্রিপ্টিং একই নয়।

object extends Appscala MyObject.scalaকমান্ড দ্বারা মৃত্যুদন্ড কার্যকর করা হয়নি , তবে প্রধান পদ্ধতিযুক্ত অবজেক্টটি scala MyObject.scalaআদেশ দ্বারা নির্বাহ করা হয়েছিল । যা স্ক্রিপ্টিংয়ের প্রধান পদ্ধতির সাথে অবজেক্টের সন্ধান হিসাবে স্কেল হিসাবে বর্ণনা করা হয়েছিল।

আরিপিএল বা Eclipse এর স্কালা ওয়ার্কশিট ব্যবহার করার সময়, MyObject.main(Array[String]())উভয় ক্ষেত্রেই স্পষ্টভাবে কল করতে হবে।

এই সহজ টিপটি আমার মতো শিক্ষানবিশদের জন্য সহায়ক হবে।


0

অ্যাপ বৈশিষ্ট্যটি [[DelayedInit]] কার্যকারিতা ব্যবহার করে প্রয়োগ করা হয়েছে যার অর্থ প্রধান পদ্ধতি কার্যকর হওয়ার আগে অবজেক্টের ক্ষেত্রগুলি আরম্ভ করা হবে না।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.