অ্যান্ড্রয়েডের জন্য প্রোগ্রামিং করার সময় আমি যখনই কোনও এসিঙ্কটাস্ক ব্যবহার করি তখন ডইইনব্যাকগ্রাউন্ড পদ্ধতিটি দেখতে এমন লাগে।
protected String doInBackground(String... args)
কিন্তু সেই ব্লকের যে কোনও জায়গায় যুক্তি ব্যবহার করার সময় আমি তাদেরগুলিতে একটি সাধারণ স্ট্রিং অ্যারের মতো অ্যাক্সেস করতে পারি উদাহরণস্বরূপ আমার প্রোগ্রামে
@Override
protected String doInBackground(String... args)
{
String details = "";
try
{
details = facade.getRecipeDetails(args[0]);
}
catch(Exception ex)
{
ex.printStackTrace();
}
return details;
}
যা ভাল কাজ করে এবং এটি মোকাবেলায় আমার কোনও সমস্যা নেই। তবে আমি ভাবছি কেন তারা স্ট্রিংয়ের একটি সাধারণ অ্যারের পরিবর্তে (স্ট্রিং।। আরগস) ব্যবহার করে। এটি কি কারণ কলিং পদ্ধতিতে আপনি ঠিক তেমন কিছু লিখতে পারেন:
new AsyncHandler.execute("argument1","argument2","argument3",...)
যুক্তিগুলি পাস করার পরিবর্তে একটি নতুন অ্যারে তৈরি করা? যদিও আমরা লিখতে পারি
new AsyncHandler().execute(new String[]{"Argument1","Argument2"});
যা কিছুটা ভার্জোজ।
(স্ট্রিং ...) এবং স্ট্রিং [] তারা কীভাবে কাজ করে তার সমার্থক, তবে যুক্তিটি পাস করা প্রাক্তনটিকে ব্যবহার করা আরও সহজ কারণ একটি অ্যারে তৈরি করার দরকার নেই? আমি যতদূর বলতে পারি, প্রাক্তনটিও পটভূমিতে একটি স্ট্রিং অ্যারেতে অনুবাদ হয়ে যায় তাই তারা উভয়ই একই কোডটি সংকলন করবে এবং এটি কেবল 'সিনট্যাকটিক চিনির'?
String...
যেনString[]
String[]
করতে পারে তবে ধরে নেওয়া যাক এটি ডিফল্টরূপে ছিল String[]
। String
অ্যারেতে বিভিন্ন প্যারাম ব্যবহার করা বেশ সমস্যা হত । পরিবর্তে তারা ব্যবহারের জন্য নমনীয়তা দিয়েছে (String ...)
।
new String[]{...}
রূপান্তরিত করার একটি সহজ মোড়ক (আপনি যখন এটি ব্যবহার করবেন তখন এটিই ঘটে String...
)
(String ...)
মানে আপনি যতটাString
প্যারাম চান তা যুক্ত করতে পারেন,String[]
এটি একটি প্যারামিটার যা স্ট্রিংগুলির একটি অ্যারে।(String ...)
প্রথম পরম উপর নির্ভর করেAsyncTask
, এটি সবসময় হয় নাString
।