Mfulton26 এর উত্তরের উত্তরগুলি ছাড়াও একটি চতুর্থ বিকল্প রয়েছে।
?.অপারেটরটি ব্যবহার করে পদ্ধতি ব্যবহারের পাশাপাশি ক্ষেত্রগুলিকেও ডিল না করে কল করা সম্ভবlet বা স্থানীয় ভেরিয়েবল ব্যবহার করে।
প্রসঙ্গে কিছু কোড:
var factory: ServerSocketFactory = SSLServerSocketFactory.getDefault();
socket = factory.createServerSocket(port)
socket.close()//smartcast impossible
socket?.close()//Smartcast possible. And works when called
এটি পদ্ধতিগুলি, ক্ষেত্রগুলি এবং এটির কাজ করার জন্য চেষ্টা করা অন্যান্য সমস্ত জিনিস নিয়ে কাজ করে।
সুতরাং সমস্যাটি সমাধান করার জন্য, ম্যানুয়াল ক্যাসেটগুলি ব্যবহার না করে বা স্থানীয় ভেরিয়েবলগুলি ব্যবহার না করে আপনি ব্যবহার করতে পারেন ?. আপনি পদ্ধতিগুলি কল ।
সহায়তার জন্য এই Kotlin পরীক্ষা করা হয় 1.1.4-3, কিন্তু পরীক্ষিত 1.1.51এবং1.1.60 । এটি অন্যান্য সংস্করণে কাজ করে এমন কোনও গ্যারান্টি নেই, এটি একটি নতুন বৈশিষ্ট্য হতে পারে।
ব্যবহার ?.অপারেটর আপনার ক্ষেত্রে ব্যবহার করা যাবে না যেহেতু এটি একটি পাস পরিবর্তনশীল যে সমস্যা আছে। এলভিস অপারেটরটিকে বিকল্প হিসাবে ব্যবহার করা যেতে পারে এবং সম্ভবত এটিই এমন একটি যা নূন্যতম পরিমাণ কোডের প্রয়োজন। পরিবর্তে continueযদিও ব্যবহার না returnকরেও ব্যবহার করা যেতে পারে।
ম্যানুয়াল কাস্টিং ব্যবহার করাও একটি বিকল্প হতে পারে, তবে এটি বাতিল নয়:
queue.add(left as Node);
অর্থ যদি বামে অন্য কোনও থ্রেডে পরিবর্তিত হয়ে থাকে তবে প্রোগ্রামটি ক্রাশ হয়ে যাবে।