টিএল; ডিআর: কোনও বিশেষ সিনট্যাক্স নয়, কেবল একটি ফাংশন
কোটলিন, জাভার বিপরীতে, এর জন্য একটি বিশেষ সিনট্যাক্স নেই। পরিবর্তে, চেষ্টা-সহ-সংস্থানগুলি , স্ট্যান্ডার্ড লাইব্রেরি ফাংশন হিসাবে দেওয়া হয় use
।
FileInputStream("filename").use { fis -> //or implicit `it`
//use stream here
}
use
বাস্তবায়নের
@InlineOnly
public inline fun <T : Closeable?, R> T.use(block: (T) -> R): R {
var closed = false
try {
return block(this)
} catch (e: Exception) {
closed = true
try {
this?.close()
} catch (closeException: Exception) {
}
throw e
} finally {
if (!closed) {
this?.close()
}
}
}
এই ফাংশনটি সমস্ত Closeable?
ধরণের জেনেরিক এক্সটেনশন হিসাবে সংজ্ঞায়িত করা হয় । Closeable
জাভা এর ইন্টারফেস যা জাভা SE7 হিসাবে -সংস্থানগুলি ব্যবহার করার অনুমতি দেয় ।
ফাংশনটি একটি ফাংশন আক্ষরিক লাগে যা একটিতে কার্যকর হয় । জাভাতে চেষ্টা-সহ-সংস্থান হিসাবে একই , এটি একটিতে বন্ধ হয়ে যায় ।
block
try
Closeable
finally
এছাড়াও ভিতরে ঘটছে ব্যর্থতা block
সীসা close
হত্যা, যেখানে সম্ভব ব্যতিক্রম আক্ষরিক হয় শুধু তাদের উপেক্ষা করে "চাপা"। এটি চেষ্টা-সহ-সংস্থান থেকে পৃথক , কারণ জাভা এর সমাধানে এই জাতীয় ব্যতিক্রমগুলি অনুরোধ করা যেতে পারে ।
এটি কিভাবে ব্যবহার করতে
use
এক্সটেনশন কোন পাওয়া যায় Closeable
পাঠকদের ইত্যাদি, অর্থাত্ স্ট্রীম করে, প্রকার।
FileInputStream("filename").use {
//use your stream by referring to `it` or explicitly give a name.
}
কোঁকড়া বন্ধনীগুলির অংশটি যা হয় তা block
হয় use
(একটি ল্যাম্বদা এখানে আর্গুমেন্ট হিসাবে পাস করা হয়)। ব্লকটি শেষ হওয়ার পরে, আপনি নিশ্চিত FileInputStream
হয়ে উঠতে পারেন যে এটি বন্ধ হয়ে গেছে।