بسته یا پکیج
هر فایل منبع در کاتلین میتواند با تعریف بسته یا پکیج آغاز شود:
package foo.bar fun baz() {} class Goo {} // ...
هر محتوایی اعم از توابع و کلاسها در فایل منبع در این بسته قرار میگیرند. بنابراین در مثال بالا نام کامل تابع baz() این است: foo.bar.baz و نام کامل Goo این است: foo.bar.Goo
اگر بسته تعیین نشود، محتوای آن فایل منبع همگی به بسته default تعلق میگیرند که اسم ندارد.
واردههای پیشفرض
تعدادی از بستهها به صورت پیشفرض به هر فایل منبعی وارد (import) میشوند:
- kotlin.*
- kotlin.annotation.*
- kotlin.collections.*
- kotlin.comparisons.* (از نسخه ۱.۱)
- kotlin.io.*
- kotlin.ranges.*
- kotlin.sequences.*
- kotlin.text.*
بر اساس پلتفرم مورد نظر، تعداد دیگری بسته هم به صورت پیشفرض وارد میشوند:
- JVM
- java.lang.*
- kotlin.jvm.*
- JS
- kotlin.js.*
وارد کردن
غیر از واردههای پیشفرض هر فایل میتواند دارای راهنمای وارد کردن خاص خود باشد. نحو وارد کردن در گرامر توضیح داده شده است:
ما میتوانیم فقط یک نام را وارد کنیم:
import foo.Bar // Bar is now accessible without qualification
یا تمام محتوای محدوده (بسته، کلاس، شیء):
import foo.* // everything in 'foo' becomes accessible
اگر تداخل نام وجود داشته باشد میتوانیم بین نامها با کلیدواژه as تمایز بگذاریم:
import foo.Bar // Bar is accessible import bar.Bar as bBar // bBar stands for 'bar.Bar'
کلیدواژه import محدود به وارد کردن کلاسها نیست. میتوانید از آن برای وارد کردن هر اعلانی استفاده کنید:
- تابعهای سطح بالا
- تابعها و ویژگیهای تعریف شده در اعلانهای شیء
- ثابتهای شمارشی (enum)
برخلاف جاوا، کاتلین import static ندارد. همه واردهها با همان کلیدواژه معمول یعنی import وارد میشوند.
پدیداری اعلانهای سطح بالا
اگر یک اعلان سطح بالا برچسب private داشته باشد مختص همان فایلی هستند که در آن تعریف شدهاند (تغییردهندههای پدیداری را ببینید)
سلام. ممنون که مباحث به روز رو برای دوستانی که با زبان انگلیسی مشکل دارن ترجمه میکنید.
من یه نقدی داشتم اونم اینکه اگر به جای ترجمه کردن عین واژه ها و استفاده از معادل فارسی برای هرکدوم بیاید مفهوم خودتون از یک جمله رو به زبان محاوره ای تر و با حفظ کلمات کلیدی اون جمله به زبان اصلی بیان کنید به نظرم خیلی راحت تر بشه متن رو درک کرد.
من خودم با خوندن متن به زبان اصلی راحت تر متوجه منظور نویسنده میشم تا متنی که کلماتی که من توی اون زبان برنامه نویسی به انگلیسی استفاده میکنم رو به فارسی ترجمه کرده باشه. اینجوری باید کلی فکر کنم ببینم منظور از این کلمه معادل چه جیزی هست.
ببخشید اگه طولانی شد
ممنون
سعی میکنم تا حد امکان انگلیسی کلمات رو هم چند بار در پرانتز بنویسم تا ذهن باهاشون آشنا بشه
سلام، می خواستم یه توضیح کلی در مورد مزایا و معایب android architecture component بدید. با توجه به اینکه در زمینه معماری اندروید روش های متفاوت و توصیه های متفاوتی وجود داره ممنون می شم دیدگاه تون رو در موردش بدونم. گوگل خیلی رو معرفی ش مانور داده و بعضی ها به استفاده ازش توصیه کردن ولی بعضی وبلاگ های اندرویدی رو که خوندم نوشته بود به جای اینکه بهتر بشه پیچیدگی رو بیشتر می کنه و اصولا خود گوگل معماری درستی رو ارائه نداده تو این کامپوننت ها.
با تشکر فراوان از مطالب خوب تون. ایام به کام
قطعا استفاده از android architecture component رو توصیه میکنم. خود من الان در پروژه به شدت ضرورت چنین کامپوننتهایی رو حس میکنم و در حال refactor پروژه و استفاده از android architecture component هستیم