рдирдорд╕реНрдХрд╛рд░, рд╣реЗрдмреНрд░! рдореИрдВ рдЖрдкрдХреЗ рдзреНрдпрд╛рди рдореЗрдВ JetBrains рдХреЗ рдХреЛрдЯрд▓рд┐рди рдХреЛрдбрд┐рдВрдЧ рдХрдиреНрд╡реЗрдВрд╢рди рдбреЙрдХреНрдпреВрдореЗрдВрдЯреЗрд╢рди рдкреЗрдЬ рдХреЗ рд▓реЗрдЦрдХ рдХрд╛ рдзреНрдпрд╛рди рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рддрд╛ рд╣реВрдВред
тЖТ рдореВрд▓ рджрд╕реНрддрд╛рд╡реЗрдЬ
рд╕рд╛рдордЧреНрд░реА:
рдЗрдВрдЯреЗрд▓реАрдЬ рдЖрдЗрдбрд┐рдпрд╛ рдореЗрдВ рд╕реНрдЯрд╛рдЗрд▓ рдЧрд╛рдЗрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
рд╡рд░реНрддрдорд╛рди рдореИрдиреБрдЕрд▓ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЗрдВрдЯреЗрд▓реАрдЬ рдЖрдЗрдбрд┐рдпрд╛ рдореЗрдВ рдлреЙрд░реНрдореЗрдЯрд┐рдВрдЧ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдХреЛрдЯрд▓рд┐рди рдкреНрд▓рдЧрдЗрди рд╕рдВрд╕реНрдХрд░рдг 1.2.20 рдпрд╛ рдмрд╛рдж рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдкрд░ рдЬрд╛рдПрдВред рд╕рдВрдкрд╛рджрдХ | рдХреЛрдб рд╢реИрд▓реА | рдХреЛрдЯрд▓рд┐рди, рдКрдкрд░реА рджрд╛рдПрдВ рдХреЛрдиреЗ рдореЗрдВ "рд╕реЗрдЯ рд╕реЗ ..." рд▓рд┐рдВрдХ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ рдбреНрд░реЙрдк-рдбрд╛рдЙрди рдореЗрдиреВ рд╕реЗ "рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╢реИрд▓реА" / рдХреЛрдЯрд▓рд┐рди рд╢реИрд▓реА рдЧрд╛рдЗрдб рдЪреБрдиреЗрдВред
рдпрд╣ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдЖрдкрдХреЗ рдХреЛрдб рдХреЛ рдЕрдиреБрд╢рдВрд╕рд┐рдд рд╢реИрд▓реА рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╕реНрд╡рд░реВрдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдирд┐рд░реАрдХреНрд╖рдг рд╕реЗрдЯрд┐рдВрдЧ рдкрд░ рдЬрд╛рдПрдВ рдФрд░ рдЪреЗрдХ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░реЗрдВ "рдХреЛрдЯ | рд╢реИрд▓реА рдореБрджреНрджреЗ | рдлрд╝рд╛рдЗрд▓ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╕реНрд╡рд░реВрдкрд┐рдд рдирд╣реАрдВ рд╣реИ"ред рдЕрдиреНрдп рд╕рддреНрдпрд╛рдкрди рдирд┐рдпрдо, рдЬреИрд╕реЗ рдирд╛рдордХрд░рдг рдкрд░рдВрдкрд░рд╛рдПрдВ, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕рдХреНрд╖рдо рд╣реИрдВред
рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рд╕рдВрд░рдЪрдирд╛
рдлрд╝реЛрд▓реНрдбрд░ рд╕рдВрд░рдЪрдирд╛
рд╡рд┐рднрд┐рдиреНрди рднрд╛рд╖рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ, рдХреЛрдЯрд▓рд┐рди рдХреЛрдб рд╡рд╛рд▓реА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдХреЛрдб рдХреЗ рд╕рдорд╛рди рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЭреВрда рдмреЛрд▓рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдЙрд╕реА рдлрд╝рд╛рдЗрд▓ рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд┐рд╕реЗ рдореБрдЦреНрдп рднрд╛рд╖рд╛ рдХреЗ рд▓рд┐рдП рд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрд╛рд╡рд╛ рдХреЗ рд▓рд┐рдП, рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдкреИрдХреЗрдЬ рдХреЗ рдирд╛рдо рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдлрд╝реЛрд▓реНрдбрд░ рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рдЭреВрда рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдХреЗрд╡рд▓ рдХреЛрдЯрд▓рд┐рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ, рдЕрдиреБрд╢рдВрд╕рд┐рдд рдлрд╝реЛрд▓реНрдбрд░ рд╕рдВрд░рдЪрдирд╛ рд╣реИ: рдлрд╝реЛрд▓реНрдбрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рд░реВрдЯ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рд╕рд╛рде рд╕рдВрдХреБрд▓ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЧрдпрд╛, рдЕрд░реНрдерд╛рддред рдпрджрд┐ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рд╕рднреА рдХреЛрдб рдкреИрдХреЗрдЬ "org.example.kotlin" рдФрд░ рдЙрд╕рдХреЗ рдкреИрдХреЗрдЬреЛрдВ рдореЗрдВ рд╣реИ, рддреЛ рдкреИрдХреЗрдЬ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╕реНрд░реЛрдд "org.example.kotlin" рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рд░реВрдЯ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдкреИрдХреЗрдЬ рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рд╡рд╛рд▓реА рдлрд╛рдЗрд▓реЗрдВ "orgред" example.kotlin.foo.bar "рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рдЬрдбрд╝ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рдЙрдкрдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛" рдлреВ / рдмрд╛рд░ "рдореЗрдВ рдЭреВрда рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдирд╛рдо
рдпрджрд┐ рдХреЛрдЯрд▓рд┐рди рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рд╡рд░реНрдЧ рд╣реЛрддрд╛ рд╣реИ (рд╕рдВрднрд╡рддрдГ рд╢реАрд░реНрд╖-рд╕реНрддрд░реАрдп рдШреЛрд╖рдгрд╛ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд), рддреЛ рдЗрд╕реЗ рдирд╛рдо рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рд╕рд╛рде рд╣реА рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд░реНрдЧред рдпрджрд┐ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХрдИ рдХрдХреНрд╖рд╛рдПрдВ рд╣реИрдВ рдпрд╛ рдХреЗрд╡рд▓ рд╢реАрд░реНрд╖-рд╕реНрддрд░реАрдп рдШреЛрд╖рдгрд╛рдПрдБ рд╣реИрдВ, рддреЛ рдПрдХ рдирд╛рдо рдЪреБрдиреЗрдВ рдЬреЛ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХреНрдпрд╛ рд╣реИ рдФрд░ рддрджрдиреБрд╕рд╛рд░ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдирд╛рдо рд░рдЦреЗрдВред рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдирд╛рдо рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рдЕрдХреНрд╖рд░ рдХреЗ рд╕рд╛рде рдКрдВрдЯ рдХреВрдмрдбрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ (рдЙрджрд╛ред ProcessDeclarations.kt
)ред
рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХреЛрдб рдХреНрдпрд╛ рд╣реИред рдпрд╣реА рд╣реИ, рдЖрдкрдХреЛ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдирд╛рдордХрд░рдг рдХреЗ рд▓рд┐рдП "рдпреВрдЯрд┐рд▓" рдЬреИрд╕реЗ рдЕрд░реНрдерд╣реАрди рд╢рдмреНрджреЛрдВ рд╕реЗ рдмрдЪрдирд╛ рдЪрд╛рд╣рд┐рдПред
рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдЖрдпреЛрдЬрди
рдПрдХ рд╣реА Kotlin рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХрдИ рдШреЛрд╖рдгрд╛рдУрдВ (рд╡рд░реНрдЧреЛрдВ, рдХрд╛рд░реНрдпреЛрдВ рдпрд╛ рд╢реАрд░реНрд╖ рд╕реНрддрд░ рдХреЗ рдЧреБрдгреЛрдВ) рд░рдЦрдиреЗ рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИ рдЕрдЧрд░ рдпреЗ рдШреЛрд╖рдгрд╛рдПрдВ рдПрдХ-рджреВрд╕рд░реЗ рд╕реЗ рд╢рдмреНрджрд╛рд░реНрде рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВ рдФрд░ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЖрдХрд╛рд░ рдЙрдЪрд┐рдд рд░рд╣рддрд╛ рд╣реИ (рдХреБрдЫ рд╕реМ рд▓рд╛рдЗрдиреЛрдВ рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ)ред
рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдЬрдм рдЗрд╕ рд╡рд░реНрдЧ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд╕рднреА рдкрд╣рд▓реБрдУрдВ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рд╡рд░реНрдЧ рдХреЗ рд▓рд┐рдП рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЙрдиреНрд╣реЗрдВ рдЙрд╕реА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдбрд╛рд▓реЗрдВ рдЬрд╣рд╛рдВ рдХрдХреНрд╖рд╛ рдЦреБрдж рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреА рд╣реИред рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╕рдордп рдЬреЛ рдХреЗрд╡рд▓ рдЗрд╕ рд╡рд░реНрдЧ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдВрджрд░реНрдн рдХреЗ рд▓рд┐рдП рд╕рд╛рд░реНрдердХ рд╣реЛрддреЗ рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХреЛрдб рдХреЗ рдмрдЧрд▓ рдореЗрдВ рд░рдЦреЗрдВред рдХреЗрд╡рд▓ "рд╕рднреА рдлреВ рдПрдХреНрд╕рдЯреЗрдВрд╢рди" рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╛рдЗрд▓реЗрдВ рди рдмрдирд╛рдПрдВред
рд╡рд░реНрдЧ рд╕рдВрд░рдЪрдирд╛
рдЖрдорддреМрд░ рдкрд░, рдПрдХ рд╡рд░реНрдЧ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдирд┐рдореНрди рдХреНрд░рдо рдореЗрдВ рдХреНрд░рдордмрджреНрдз рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
- рд╕рдВрдкрддреНрддрд┐ рдШреЛрд╖рдгрд╛рдПрдВ рдФрд░ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдмреНрд▓реЙрдХ
- рдорд╛рдзреНрдпрдорд┐рдХ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░
- рд╡рд┐рдзрд┐ рдШреЛрд╖рдгрд╛рдПрдБ
- рд╕рд╛рдереА рд╡рд╕реНрддреБрдУрдВ
рд╡рд┐рдзрд┐ рдШреЛрд╖рдгрд╛рдУрдВ рдХреЛ рд╡рд░реНрдгрд╛рдиреБрдХреНрд░рдо рдпрд╛ рдиреЗрддреНрд░рд╣реАрди рд░реВрдк рд╕реЗ рдХреНрд░рдордмрджреНрдз рди рдХрд░реЗрдВ, рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рд╡рд┐рд╕реНрддрд╛рд░ рд╡рд┐рдзрд┐рдпреЛрдВ рд╕реЗ рдЕрд▓рдЧ рди рдХрд░реЗрдВред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рддрд╛рд░реНрдХрд┐рдХ рд░реВрдк рд╕реЗ рдЬреБрдбрд╝реЗ рдХреЛрдб рдХреЛ рдПрдХ рд╕рд╛рде рд░рдЦреЗрдВ рддрд╛рдХрд┐ рдЬреЛ рдХреЛрдИ рднреА рдКрдкрд░ рд╕реЗ рдиреАрдЪреЗ рддрдХ рдХрдХреНрд╖рд╛ рдХреЛ рдкрдврд╝рддрд╛ рд╣реИ рд╡рд╣ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ рдХреЗ рддрд░реНрдХ рдХрд╛ рдкрд╛рд▓рди рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдХреНрд░рдо рдЪреБрдиреЗрдВ (рдЙрдЪреНрдЪ рд╕реНрддрд░ рдХрд╛ рдХреЛрдб рдкрд╣рд▓реЗ [рдЙрдЪреНрдЪ-рд╕реНрддрд░реАрдп рд╕рд╛рдорд╛рди рдкрд╣рд▓реЗ] рдФрд░ рдмрд╛рдж рдореЗрдВ рдпрд╛ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд рд╡рд┐рд╡рд░рдг) рдФрд░ рдЙрд╕ рдкрд░ рдЪрд┐рдкрдХреЗ рд░рд╣реЗрдВред
рдЗрди рд╡рд░реНрдЧреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХреЛрдб рдХреЗ рдЖрдЧреЗ рдиреЗрд╕реНрдЯреЗрдб рдХрдХреНрд╖рд╛рдПрдВ рд░рдЦреЗрдВред рдпрджрд┐ рдХрдХреНрд╖рд╛рдПрдВ рдмрд╛рд╣рд░реА рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдЕрднрд┐рдкреНрд░реЗрдд рд╣реИрдВ рдФрд░ рд╡рд░реНрдЧ рдХреЗ рднреАрддрд░ рд╕рдВрджрд░реНрднрд┐рдд рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рдЙрдиреНрд╣реЗрдВ рд╕рд╛рдереА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдмрд╛рдж рдЕрдВрдд рдореЗрдВ рдбрд╛рд▓ рджреЗрдВред
рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдлреНрд░реЗрдорд╡рд░реНрдХ
рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╕рдордп, рдЬрд┐рд╕ рд╕рдВрд░рдЪрдирд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдЙрд╕реА рд╕рдВрд░рдЪрдирд╛ рдХреЛ рд░рдЦреЗрдВ (рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдЕрддрд┐рд░рд┐рдХреНрдд рдирд┐рдЬреА рддрд░реАрдХреЛрдВ рдХреЗ рд╕рд╛рде рд╡реИрдХрд▓реНрдкрд┐рдХ рдХрд░реЗрдВ)
рдУрд╡рд░рд░рд╛рдЗрдб рд╕реНрдЯреНрд░рдХреНрдЪрд░
Redefinitions рд╣рдореЗрд╢рд╛ рдПрдХ рд╕рд╛рде, рдПрдХ рдХреЗ рдмрд╛рдж рдПрдХ рдбрд╛рд▓рддреЗ рд╣реИрдВред
рдирд╛рдордХрд░рдг рдирд┐рдпрдо
рдХреЛрдЯрд▓рд┐рди рдЬрд╛рд╡рд╛ рдХреЗ рд╕рдорд╛рди рдирд╛рдордХрд░рдг рд╕рдореНрдореЗрд▓рдиреЛрдВ рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рддрд╛ рд╣реИред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ:
рд▓реЛрдЕрд░рдХреЗрд╕ рдкреИрдХреЗрдЬ рдирд╛рдо рдФрд░ рдЕрдВрдбрд░рд╕реНрдХреЛрд░ (org.example.myproject) рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВред рдмрд╣реБ-рд╢рдмреНрдж рдирд╛рдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЖрдорддреМрд░ рдкрд░ рдЕрдиреБрд╢рдВрд╕рд┐рдд рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрджрд┐ рдЖрдкрдХреЛ рдХрдИ рд╢рдмреНрджреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдк рдпрд╛ рддреЛ рдЙрдиреНрд╣реЗрдВ рдПрдХ рд╕рд╛рде рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдКрдВрдЯ рдХреВрдмрдбрд╝ (org.examle.myProject) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдХреИрдкрд┐рдЯрд▓ рдФрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдирд╛рдо рдПрдХ рдХреИрдкрд┐рдЯрд▓ рд▓реЗрдЯрд░ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдКрдВрдЯ рдХреВрдмрдбрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ:
open class DeclarationProcessor { ... } object EmptyDeclarationProcessor : DeclarationProcessor() { ... }
рдХрд╛рд░реНрдп рдХрд╛ рдирд╛рдо
рдлрд╝рдВрдХреНрд╢рди, рдЧреБрдг рдФрд░ рд╕реНрдерд╛рдиреАрдп рдЪрд░ рдХреЗ рдирд╛рдо рдПрдХ рд▓реЛрдЕрд░рдХреЗрд╕ рдЕрдХреНрд╖рд░ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдореЗрдВ рдЕрдВрдбрд░рд╕реНрдХреЛрд░ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ:
fun processDeclarations() { ... } var declarationCount = ...
рдЕрдкрд╡рд╛рдж: рдлреИрдХреНрдЯреНрд░реА рдХреНрд▓рд╛рд╕ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдлрд╝реИрдХреНрдЯреНрд░реА рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХрд╛ рдПрдХ рд╣реА рдирд╛рдо рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬреИрд╕реЗ рдХреНрд▓рд╛рд╕ рдмрдирд╛рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ:
abstract class Foo { ... } class FooImpl : Foo { ... } fun Foo(): Foo { return FooImpl(...) }
рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдирд╛рдо
рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ (рдФрд░ рдХреЗрд╡рд▓ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ) рдЙрд▓реНрдЯреЗ рдЕрд▓реНрдкрд╡рд┐рд░рд╛рдореЛрдВ рдореЗрдВ рд╕рдВрд▓рдЧреНрди рд╕реНрдерд╛рдиреЛрдВ рдХреЗ рд╕рд╛рде рд╡рд┐рдзрд┐ рдХреЗ рдирд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рд╣реИред (рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдРрд╕реЗ рд╡рд┐рдзрд┐ рдирд╛рдо рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдПрдВрдбреНрд░реЙрдЗрдб рд░рдирдЯрд╛рдЗрдо рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИрдВред) рдЯреЗрд╕реНрдЯ рдХреЛрдб рдореЗрдВ рд╡рд┐рдзрд┐ рдирд╛рдореЛрдВ рдореЗрдВ рдЕрдВрдбрд░рд╕реНрдХреЛрд░ рдХреА рднреА рдЕрдиреБрдорддрд┐ рд╣реИред
class MyTestCase { @Test fun `ensure everything works`() { ... } @Test fun ensureEverythingWorks_onAndroid() { ... } }
рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдирд╛рдордХрд░рдг
рд▓рдЧрд╛рддрд╛рд░ рдирд╛рдо (рдЧреБрдг рд▓реЗрдмрд▓ const
, рдпрд╛ рд╢реАрд░реНрд╖ рд╕реНрддрд░ рдХреЗ рдЧреБрдг рдпрд╛ рдХрд╕реНрдЯрдо рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдмрд┐рдирд╛ рдПрдХ val
рдСрдмреНрдЬреЗрдХреНрдЯ рдЬреЛ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдбреЗрдЯрд╛ рд╢рд╛рдорд┐рд▓ рд╣реИ) рдХреЛ рдХреИрдкрд┐рдЯрд▓ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЕрдВрдбрд░рд╕реНрдХреЛрд░ рджреНрд╡рд╛рд░рд╛ рдЕрд▓рдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
const val MAX_COUNT = 8 val USER_NAME_FIELD = "UserName"
рд╢реАрд░реНрд╖-рд╕реНрддрд░реАрдп рдирд╛рдо рдпрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдЧреБрдг рдЬрд┐рд╕рдореЗрдВ рд╡реНрдпрд╡рд╣рд╛рд░ рдпрд╛ рдЙрддреНрдкрд░рд┐рд╡рд░реНрддрд┐рдд рдбреЗрдЯрд╛ рд╡рд╛рд▓реА рд╡рд╕реНрддреБрдПрдВ рд╣реЛрддреА рд╣реИрдВ рдЙрдиреНрд╣реЗрдВ рдКрдВрдЯ рдХреВрдмрдбрд╝ рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдп рдирд╛рдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП:
val mutableCollection: MutableSet<String> = HashSet()
рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдирд╛рдо рдЬреЛ рд╕рд┐рдВрдЧреНрд▓рдЯрди рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рд╡рд░реНрдЧ рдШреЛрд╖рдгрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрд╕реА рдирд╛рдордХрд░рдг рд╢реИрд▓реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
val PersonComparator: Comparator<Person> = ...
рдЧрдгрдирд╛ рдХреЗ рд▓рд┐рдП, рдЖрдк рдЙрдкрдпреЛрдЧ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдмрдбрд╝реЗ рдЕрдХреНрд╖рд░реЛрдВ рдореЗрдВ рдЕрд▓рдЧ рдХрд┐рдП рдЧрдП рдХреИрдкрд┐рдЯрд▓ рдЕрдХреНрд╖рд░реЛрдВ рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рдирд╛рдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдКрдВрдЯ рдХреВрдмрдбрд╝ рд╢реИрд▓реА рдореЗрдВ, рдХреИрдкрд┐рдЯрд▓ рд▓реЗрдЯрд░ рд╕реЗ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
enum class Color { RED, GREEN }
enum class Color { RedColor, GreenColor }
рдЕрдиреБрд╡рд╛рджрдХ рдХрд╛ рдиреЛрдЯ: рдмрд╕ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╢реИрд▓рд┐рдпреЛрдВ рдХрд╛ рдорд┐рд╢реНрд░рдг рди рдХрд░реЗрдВред рдПрдХ рд╢реИрд▓реА рдЪреБрдиреЗрдВ рдФрд░ рдЗрд╕реЗ рдЕрдкрдиреЗ рдбрд┐рдЬрд╛рдЗрди рдореЗрдВ рдЪрд┐рдкрдХрд╛ рджреЗрдВред
рдЫрд┐рдкреЗ рд╣реБрдП рдЧреБрдгреЛрдВ рдХрд╛ рдирд╛рдордХрд░рдг
рдпрджрд┐ рдХрд┐рд╕реА рд╡рд░реНрдЧ рдореЗрдВ рджреЛ рдЧреБрдг рд╣реЛрддреЗ рд╣реИрдВ рдЬреЛ рд╡реИрдЪрд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рд╕рдорд╛рди рд╣реЛрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдПрдХ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдПрдкреАрдЖрдИ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ рдФрд░ рджреВрд╕рд░рд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ, рдЫрд┐рдкреА рд╣реБрдИ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдирд╛рдо рдХреЗ рд▓рд┐рдП рдЙрдкрд╕рд░реНрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдВрдбрд░рд╕реНрдХреЛрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:
class C { private val _elementList = mutableListOf<Element>() val elementList: List<Element> get() = _elementList }
рд╕рд╣реА рдирд╛рдо рдЪреБрдирдирд╛
рдХрдХреНрд╖рд╛ рдХрд╛ рдирд╛рдо рдЖрдорддреМрд░ рдкрд░ рдПрдХ рд╕рдВрдЬреНрдЮрд╛ рдпрд╛ рд╡рд╛рдХреНрдпрд╛рдВрд╢ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдХрдХреНрд╖рд╛ рдХреНрдпрд╛ рд╣реИ:
List, PersonReader
рд╡рд┐рдзрд┐ рдХрд╛ рдирд╛рдо рдЖрдорддреМрд░ рдкрд░ рдПрдХ рдХреНрд░рд┐рдпрд╛ рдпрд╛ рд╡рд╛рдХреНрдпрд╛рдВрд╢ рдХреНрд░рд┐рдпрд╛ рд╣реИ рдЬреЛ рдмрддрд╛рддреА рд╣реИ рдХрд┐ рд╡рд┐рдзрд┐ рдХреНрдпрд╛ рдХрд░рддреА рд╣реИ:
close, readPersons
рдирд╛рдо рдХреЛ рдпрд╣ рднреА рдЗрдВрдЧрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдХреНрдпрд╛ рд╡рд┐рдзрд┐ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдмрджрд▓рддреА рд╣реИ рдпрд╛ рдПрдХ рдирдпрд╛ рд░рд┐рдЯрд░реНрди рджреЗрддреА рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, sort
рдПрдХ рдРрд╕рд╛ рд╕реЙрд░реНрдЯ рд╣реИ рдЬреЛ рд╕рдВрдЧреНрд░рд╣ рдХреЛ рдмрджрд▓рддрд╛ рд╣реИ, рдФрд░ sorted
рдЧрдпрд╛ рд╕рдВрдЧреНрд░рд╣ рдХреА рдирдИ рд╕реЙрд░реНрдЯ рдХреА рдЧрдИ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдХреА рд╡рд╛рдкрд╕реА рд╣реИред
рдирд╛рдореЛрдВ рдХреЛ рдЗрдХрд╛рдИ рдХреЗ рдЙрджреНрджреЗрд╢реНрдп рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЗрдВрдЧрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЗрд╕рд▓рд┐рдП рдирд╛рдореЛрдВ рдореЗрдВ рдЕрд░реНрдерд╣реАрди рд╢рдмреНрджреЛрдВ ( Manager
, Wrapper
, рдЖрджрд┐) рдХреЗ рдЙрдкрдпреЛрдЧ рд╕реЗ рдмрдЪрдирд╛ рдмреЗрд╣рддрд░ рд╣реИред
рдЬрдм рд╡рд┐рдЬреНрдЮрд╛рдкрди рдирд╛рдо рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдирд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдХреИрдкрд┐рдЯрд▓ рдЕрдХреНрд╖рд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдпрджрд┐ рдЗрд╕рдореЗрдВ рджреЛ рдЕрдХреНрд╖рд░ ( IOStream
) рд╢рд╛рдорд┐рд▓ рд╣реИрдВ; рдпрд╛ рдХреЗрд╡рд▓ рдкрд╣рд▓рд╛ рдЕрдХреНрд╖рд░ рдЕрдкрд░рдХреЗрд╕, рдЕрдЧрд░ рдпрд╣ рд▓рдВрдмрд╛ рд╣реИ ( XmlFormatter
, HttpInputStream
)ред
рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдХреЛрдЯрд▓рд┐рди рдЬрд╛рд╡рд╛ рдкреНрд░рд╛рд░реВрдкрдг рд╕рдореНрдореЗрд▓рдиреЛрдВ рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рддрд╛ рд╣реИред
рдЗрдВрдбреЗрдВрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП 4 рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдЯреИрдм рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВред
рдмреНрд░реЗрд╕рд┐рдЬрд╝ рдХреЗ рд▓рд┐рдП, рдЙрджреНрдШрд╛рдЯрди рдмреНрд░реЗрд╕ рдХреЛ рдЙрд╕ рдкрдВрдХреНрддрд┐ рдХреЗ рдЕрдВрдд рдореЗрдВ рд░рдЦреЗрдВ рдЬрд╣рд╛рдБ рд╕рдВрд░рдЪрдирд╛ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИ рдФрд░ рдПрдХ рдЕрд▓рдЧ рд▓рд╛рдЗрди рдкрд░ рдмреНрд░реЗрд╕рд┐рдВрдЧ рдмреНрд░реЗрд╕, рдХреНрд╖реИрддрд┐рдЬ рд░реВрдк рд╕реЗ рдЙрджреНрдШрд╛рдЯрди рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд╕рд╛рде рд╕рдВрд░реЗрдЦрд┐рдд рд╣реЛрддреА рд╣реИред
if (elements != null) { for (element in elements) {
(рдиреЛрдЯ: рдХреЛрдЯрд▓рд┐рди рдореЗрдВ, рдПрдХ рдЕрд░реНрдзрд╡рд┐рд░рд╛рдо рд╡реИрдХрд▓реНрдкрд┐рдХ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд▓рд╛рдЗрди рд░реИрдкрд┐рдВрдЧ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рднрд╛рд╖рд╛ рд╢реИрд▓реА рдореЗрдВ рдЬрд╛рд╡рд╛ рд╢реИрд▓реА рдореЗрдВ рдШреБрдВрдШрд░рд╛рд▓реЗ рдмреНрд░реЗрд╕рд┐рдЬрд╝ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рдФрд░ рдпрджрд┐ рдЖрдк рдПрдХ рдЕрд▓рдЧ рд╕реНрд╡рд░реВрдкрдг рд╢реИрд▓реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдЖрдк рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрди рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред)
рдХреНрд╖реИрддрд┐рдЬ рд╕реНрдерд╛рди
рдмрд╛рдЗрдирд░реА рдСрдкрд░реЗрдЯрд░реЛрдВ (a + b)
рдЖрд╕рдкрд╛рд╕ рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рд░рдЦреЗрдВред рдЕрдкрд╡рд╛рдж: "рдСрдкрд░реЗрдЯрд░" (0..i)
рд▓рд┐рдП "рд╕реАрдорд╛" рдХреЗ рдЖрд╕рдкрд╛рд╕ рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рди (0..i)
рдЕрдкрд░ рд╕рдВрдЪрд╛рд▓рдХреЛрдВ рдХреЗ рдЖрд╕рдкрд╛рд╕ рд╕реНрдерд╛рди рди рд░рдЦреЗрдВ (a++)
рдХреБрдВрдЬреА рдирд┐рдпрдВрддреНрд░рдг рд╢рдмреНрджреЛрдВ рдХреЗ рдмреАрдЪ рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рд░рдЦреЗрдВ ( if
, when
, рдХреЗ for
рдФрд░ while
) рдФрд░ рд╕рдВрдмрдВрдзрд┐рдд рд╢реБрд░реБрдЖрддреА рдХреЛрд╖реНрдардХред
рдПрдХ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░, рд╡рд┐рдзрд┐ рдпрд╛ рд╡рд┐рдзрд┐ рдХреА рдкреНрд░рд╛рдердорд┐рдХ рдШреЛрд╖рдгрд╛ рдореЗрдВ рдмреНрд░реИрдХреЗрдЯ рдЦреЛрд▓рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдПрдХ рд╕реНрдерд╛рди рди рд░рдЦреЗрдВред
class A(val x: Int) fun foo(x: Int) { ... } fun bar() { foo(1) }
(
, [
рдпрд╛ рдкрд╣рд▓реЗ ]
, )
рдмрд╛рдж рдХрднреА рднреА рдПрдХ рдЬрдЧрд╣ рди рд░рдЦреЗрдВред
рдПрдХ рдмрд┐рдВрджреБ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХрднреА рднреА рдЬрдЧрд╣ рди рд░рдЦреЗрдВ .
рдпрд╛ рдСрдкрд░реЗрдЯрд░ ?.
:
foo.bar().filter { it > 2 }.joinToString() foo?.()
рдЯрд┐рдкреНрдкрдгреА рдХреЗ рд▓рд┐рдП рдбрдмрд▓ рд╕реНрд▓реИрд╢ рдХреЗ рдмрд╛рдж рдПрдХ рд╕реНрдерд╛рди рд░рдЦреЗрдВ //
:
рдкреНрд░рдХрд╛рд░ рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдХреЛрдг рдХреЛрд╖реНрдардХ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рди рд░рдЦреЗрдВ:
Class Map<K, V> { ... }
рдбрдмрд▓ рдХреНрд▓рд╛рд╕ рдХреЗ рдЖрд╕рдкрд╛рд╕ рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рди рдбрд╛рд▓реЗрдВ: рд╕рдВрджрд░реНрдн рдХреЗ рд▓рд┐рдП ::
рд╡рд░реНрдЧ рд╡рд┐рдзрд┐:
Foo::class String::length
рдкрд╣рд▓реЗ рдПрдХ рдЬрдЧрд╣ рдирд╣реАрдВ рд╣реИ ?
рдПрдХ null
рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
String?
рдЖрдо рддреМрд░ рдкрд░, рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рдХреНрд╖реИрддрд┐рдЬ рд╕рдВрд░реЗрдЦрдг рд╕реЗ рдмрдЪреЗрдВред рдПрдХ рдЕрд▓рдЧ рд▓рдВрдмрд╛рдИ рдХреЗ рдирд╛рдо рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХрд╛ рдирд╛рдо рдмрджрд▓рдирд╛ рдХреЛрдб рдХреЗ рд╕реНрд╡рд░реВрдкрдг рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдкреЗрдЯ
рдмреГрд╣рджрд╛рдиреНрддреНрд░ рд╕реЗ рдкрд╣рд▓реЗ рдПрдХ рдЬрдЧрд╣ рд░рдЦреЛ :
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдорд╛рдорд▓реЛрдВ рдореЗрдВ:
- рдЬрдм рдЗрд╕реЗ рд╕реБрдкрд░ рдкреНрд░рдХрд╛рд░ рд╕реЗ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ;
abstract class Foo<out T : Any>
- рдЬрдм рдПрдХ рд╕реБрдкрд░рдХреНрд▓рд╛рд╕ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдпрд╛ рдЙрд╕реА рдХреНрд▓рд╛рд╕ рдХреЗ рджреВрд╕рд░реЗ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ рд╕реМрдВрдкрдирд╛;
constructor(x: String) : super(x) { ... } constructor(x: String) : this(x) { ... }
- рдХреАрд╡рд░реНрдб рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдмрд╛рджред
val x = object : IFoo { ... }
рдкрд╣рд▓реЗ рдПрдХ рд╕реНрдерд╛рди рди рд░рдЦреЗрдВ :
рдЬрдм рд╡рд╣ рдПрдХ рд╡рд┐рдЬреНрдЮрд╛рдкрди рдФрд░ рдЙрд╕рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рдЕрд▓рдЧ рдХрд░рддрд╛ рд╣реИред
abstract fun foo(a: Int): T
рд╣рдореЗрд╢рд╛ рдПрдХ рд╕реНрдерд╛рди рд░рдЦреЗрдВ :
abstract class Foo<out T : Any> : IFoo { abstract fun foo(a: Int): T } class FooImpl : Foo() { constructor(x: String) : this(x) { ... } val x = object : IFoo { ... } }
рдХрдИ рдмреБрдирд┐рдпрд╛рджреА рдирд┐рд░реНрдорд╛рдг рдорд╛рдкрджрдВрдбреЛрдВ рдФрд░ рдЫреЛрдЯреЗ рдирд╛рдореЛрдВ рд╡рд╛рд▓реА рдХрдХреНрд╖рд╛рдПрдВ рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рд▓рд┐рдЦреА рдЬрд╛ рд╕рдХрддреА рд╣реИрдВ:
class Person(id: Int, name: String)
рд▓рдВрдмреЗ рдирд╛рдо рдпрд╛ рдорд╛рдкрджрдВрдбреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╡рд╛рд▓реА рдХрдХреНрд╖рд╛рдУрдВ рдХреЛ рдкреНрд░рд╛рд░реВрдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рддрд╛рдХрд┐ рдирд┐рд░реНрдорд╛рдгрдХрд░реНрддрд╛ рдХрд╛ рдкреНрд░рддреНрдпреЗрдХ рдореБрдЦреНрдп рдкреИрд░рд╛рдореАрдЯрд░ рдЗрдВрдбреЗрдВрдЯреЗрд╢рди рдХреЗ рд╕рд╛рде рдПрдХ рдЕрд▓рдЧ рд▓рд╛рдЗрди рдкрд░ рд╣реЛред рд╕рд╛рде рд╣реА, рдХреНрд▓реЛрдЬрд┐рдВрдЧ рдмреНрд░реИрдХреЗрдЯ рдирдИ рд▓рд╛рдЗрди рдкрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рд╣рдо рд╡рдВрд╢рд╛рдиреБрдХреНрд░рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╕реБрдкрд░рдХреНрд▓рд╛рд╕ рдХреЗ рдирд┐рд░реНрдорд╛рддрд╛ рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВ рдпрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдЗрдВрдЯрд░рдлреЗрд╕ рдХреА рд╕реВрдЪреА рдХреЛ рдмреНрд░реИрдХреЗрдЯ рдХреЗ рд╕рдорд╛рди рд▓рд╛рдЗрди рдкрд░ рд╕реНрдерд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:
class Person( id: Int, name: String, surname: String ) : Human(id, name) { ... }
рдЬрдм рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рдФрд░ рд╕реБрдкрд░рдХреНрд▓рд╛рд╕ рдХреЗ рдирд┐рд░реНрдорд╛рддрд╛ рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛, рд╕реБрдкрд░рдХреНрд▓рд╛рд╕ рдХрд╛ рдирд┐рд░реНрдорд╛рдгрдХрд░реНрддрд╛ рдкрд╣рд▓реЗ рд╕реНрдерд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рддреЛ рдПрдХ рдирдИ рд▓рд╛рдЗрди рдкрд░ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдирд╛рдо рд╡рд╛рдо-рдФрдЪрд┐рддреНрдп рд╣реИ:
class Person( id: Int, name: String, surname: String ) : Human(id, name), KotlinMaker { ... }
рд╕реБрдкрд░ рдкреНрд░рдХрд╛рд░ рдХреА рдПрдХ рд▓рдВрдмреА рд╕реВрдЪреА рд╡рд╛рд▓реЗ рд╡рд░реНрдЧреЛрдВ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдмреГрд╣рджрд╛рдиреНрддреНрд░ рдХреЗ рдмрд╛рдж рдПрдХ рд▓рд╛рдЗрди рдмреНрд░реЗрдХ рд▓рдЧрд╛рдиреЗ рдФрд░ рдмрд╛рдИрдВ рдУрд░ рдХреНрд╖реИрддрд┐рдЬ рд░реВрдк рд╕реЗ рд╕рднреА рд╕реБрдкрд░ рдкреНрд░рдХрд╛рд░ рдХреЗ рдирд╛рдореЛрдВ рдХреЛ рд╕рдВрд░реЗрдЦрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
class MyFavouriteVeryLongClassHolder : MyLongHolder<MyFavouriteVeryLongClass>(), SomeOtherInterface, AndAnotherOne { fun foo() { ... } }
рдХреНрд▓рд╛рд╕ рд╣реЗрдбрд┐рдВрдЧ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдЬрдм рдХреНрд▓рд╛рд╕ рдХреА рд╣реЗрдбрд┐рдВрдЧ рд▓рдВрдмреА рд╣реЛрддреА рд╣реИ, рдпрд╛ рддреЛ рдХреНрд▓рд╛рд╕ рд╣реЗрдбрд┐рдВрдЧ рдХреЗ рдмрд╛рдж рдПрдХ рдЦрд╛рд▓реА рд▓рд╛рдЗрди рд░рдЦреЗрдВ (рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рд╣реИ), рдпрд╛ рдУрдкрдирд┐рдВрдЧ рдмреНрд░реЗрд╕ рдХреЛ рдПрдХ рдЕрд▓рдЧ рд▓рд╛рдЗрди рдкрд░ рд░рдЦреЗрдВ:
class MyFavouriteVeryLongClassHolder : MyLongHolder<MyFavouriteVeryLongClass>(), SomeOtherInterface, AndAnotherOne { fun foo() { ... } }
рдирд┐рд░реНрдорд╛рддрд╛ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд▓рд┐рдП рдирд┐рдпрдорд┐рдд рдЗрдВрдбреЗрдВрдЯреЗрд╢рди (4 рд░рд┐рдХреНрдд рд╕реНрдерд╛рди) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
рдФрдЪрд┐рддреНрдп: рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдореБрдЦреНрдп рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ рдШреЛрд╖рд┐рдд рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдореЗрдВ рд╕рдорд╛рди рдЗрдВрдбреЗрдВрдЯреЗрд╢рди рд╣реИ рдЬреЛ рд╡рд░реНрдЧ рдХреЗ рд╢рд░реАрд░ рдореЗрдВ рдШреЛрд╖рд┐рдд рдЧреБрдг рд╣реИрдВред
рд╕рдВрд╢реЛрдзрдХ
рдпрджрд┐ рдХрд┐рд╕реА рд╡рд┐рдЬреНрдЮрд╛рдкрди рдореЗрдВ рдХрдИ рд╕рдВрд╢реЛрдзрдХ рд╣реЛрддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрд╢рд╛ рдЙрдиреНрд╣реЗрдВ рдирд┐рдореНрди рдХреНрд░рдо рдореЗрдВ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░реЗрдВ:
public / protected / private / internal expect / actual final / open / abstract / sealed / const external override lateinit tailrec vararg suspend inner enum / annotation companion inline infix operator data
рд╕рднреА рдПрдиреЛрдЯреЗрд╢рди рдХреЛ рд╕рдВрд╢реЛрдзрдХ рд╕реЗ рдкрд╣рд▓реЗ рд░рдЦреЗрдВ:
@Named("Foo") private val foo: Foo
рдпрджрд┐ рдЖрдк рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдкрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдирд┐рд░рд░реНрдердХ рд╕рдВрд╢реЛрдзрдХ (рдЙрджрд╛ред рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ) рдХреЛ рдЫреЛрдбрд╝ рджреЗрдВред
рдШреЛрд╖рдгрд╛рдУрдВ рдХреЛ рдЖрдорддреМрд░ рдкрд░ рдШреЛрд╖рдгрд╛ рд╕реЗ рдкрд╣рд▓реЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд▓рд╛рдЗрдиреЛрдВ рдкрд░ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╡реЗ рд╕рдВрд▓рдЧреНрди рд╣реЛрддреЗ рд╣реИрдВ, рдФрд░ рдПрдХ рд╣реА рдЗрдВрдбреЗрдВрдЯ рдХреЗ рд╕рд╛рде:
@Target(AnnotationTarget.PROPERTY) annotation class JsonExclude
рддрд░реНрдХреЛрдВ рдХреЗ рдмрд┐рдирд╛ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЛ рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рд╕реНрдерд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
@JsonExclude @JvmField var x: String
рддрд░реНрдХреЛрдВ рдХреЗ рдмрд┐рдирд╛ рдПрдХ рдПрдиреЛрдЯреЗрд╢рди рдХреЛ рдЙрд╕реА рд▓рд╛рдЗрди рдкрд░ рд░рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рд╕рдВрдмрдВрдзрд┐рдд рдШреЛрд╖рдгрд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╣реИ:
@Test fun foo() { ... }
рдлрд╝рд╛рдЗрд▓ рдПрдиреЛрдЯреЗрд╢рди
рдлрд╛рдЗрд▓реЛрдВ рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдкреИрдХреЗрдЬ рдХреЗ рдмрдпрд╛рди рд╕реЗ рдкрд╣рд▓реЗ рдлрд╛рдЗрд▓ рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХреЗ рдмрд╛рдж рд░рдЦреА рдЧрдИ рд╣реИ (рдпрджрд┐ рдХреЛрдИ рд╣реЛ), рддреЛ рдкреИрдХреЗрдЬ рд╕реЗ рдПрдХ рдЦрд╛рд▓реА рд▓рд╛рдЗрди рджреНрд╡рд╛рд░рд╛ рдЕрд▓рдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдЗрд╕ рддрдереНрдп рдкрд░ рдЬреЛрд░ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╡реЗ рдлрд╝рд╛рдЗрд▓ рдкрд░ рд▓рдХреНрд╖рд┐рдд рд╣реИрдВ, рдкреИрдХреЗрдЬ рдирд╣реАрдВ)ред
@file:JvmName("FooBar") package foo.bar
рдпрджрд┐ рд╡рд┐рдзрд┐ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдПрдХ рдкрдВрдХреНрддрд┐ рдкрд░ рдлрд┐рдЯ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдирд┐рдореНрди рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:
fun longMethodName( argument: ArgumentType = defaultValue, argument2: AnotherArgumentType ): ReturnType {
рдлрд╝рдВрдХреНрд╢рди рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд▓рд┐рдП рдирд┐рдпрдорд┐рдд рдЗрдВрдбреЗрдВрдЯреЗрд╢рди (4 рд░рд┐рдХреНрдд рд╕реНрдерд╛рди) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
рдФрдЪрд┐рддреНрдп: рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдВрдЧрддрддрд╛
рдПрдХ рдкрдВрдХреНрддрд┐ рд╕реЗ рдорд┐рд▓рдХрд░ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдШреБрдВрдШрд░рд╛рд▓реЗ рдмреНрд░реЗрд╕рд┐рдЬрд╝ рдХреЗ рдмрд┐рдирд╛ рдПрдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИред
fun foo(): Int {
рдпрджрд┐ рдПрдХрд▓-рд░реЗрдЦрд╛ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рд╢рд░реАрд░ рдШреЛрд╖рдгрд╛ рдХреЗ рд╕рдорд╛рди рд░реЗрдЦрд╛ рдкрд░ рдлрд┐рдЯ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рдореЗрдВ = рдЪрд┐рд╣реНрди рдбрд╛рд▓реЗрдВред 4 рд╕реНрдерд╛рдиреЛрдВ рджреНрд╡рд╛рд░рд╛ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд╢рд░реАрд░ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░реЗрдВред
fun f(x: String) = x.length
рдХреЗрд╡рд▓ рдкрдврд╝рдиреЗ рдпреЛрдЧреНрдп рдЧреБрдгреЛрдВ рдХреЗ рд▓рд┐рдП, рдПрдХрд▓-рдкрдВрдХреНрддрд┐ рд╕реНрд╡рд░реВрдкрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реЛрддрд╛ рд╣реИ:
val isEmpty: Boolean get() = size == 0
рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдЧреБрдгреЛрдВ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрд╢рд╛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдФрд░ set
:
val foo: String get() { ... }
рдЖрд░рдВрднреАрдХрд░рдг рд╡рд╛рд▓реЗ рдЧреБрдгреЛрдВ рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЗрдирд┐рд╢рд▓рд╛рдЗрдЬрд╝рд░ рдмрд╣реБрдд рд▓рдВрдмрд╛ рд╣реИ, рддреЛ рдмрд░рд╛рдмрд░ рдЪрд┐рд╣реНрди рдХреЗ рдмрд╛рдж рдПрдХ рд▓рд╛рдЗрди рдмреНрд░реЗрдХ рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЪрд╛рд░ рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рдХрд╛ рд╕рдВрдХреЗрдд рджреЗрдВ:
private val defaultCharset: Charset? = EncodingRegistry.getInstance().getDefaultCharsetForPropertiesFiles(file)
рдпрджрд┐ рдпрд╛ when
рдирд┐рдпрдВрддреНрд░рдг рдХрдерди рдмрд╣реБ-рд░реЗрдЦрд╛ рдореЗрдВ рд╕реНрдерд┐рддрд┐ рд╣реИ, рддреЛ рд╣рдореЗрд╢рд╛ рдХрдерди рдХреЗ рд╢рд░реАрд░ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдШреБрдВрдШрд░рд╛рд▓реЗ рдмреНрд░реЗрд╕рд┐рдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдХрдерди рдХреА рд╢реБрд░реБрдЖрдд рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ 4 рд╕реНрдерд╛рдиреЛрдВ рджреНрд╡рд╛рд░рд╛ рд╕реНрдерд┐рддрд┐ рдХреА рдкреНрд░рддреНрдпреЗрдХ рдмрд╛рдж рдХреА рд░реЗрдЦрд╛ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░реЗрдВред рд╢рд░реНрдд рдХреЗ рд╕рдорд╛рдкрди рдХреЛрд╖реНрдардХреЛрдВ рдХреЛ рдПрдХ рдЕрд▓рдЧ рд░реЗрдЦрд╛ рдкрд░ рдШреБрдВрдШрд░рд╛рд▓реЗ рдмреНрд░реЗрд╕ рдХреЗ рд╕рд╛рде рд░рдЦреЗрдВ:
if (!component.isSyncing && !hasAnyKotlinRuntimeInScope(module) ) { return createKotlinNotConfiguredPanel(module) }
рдФрдЪрд┐рддреНрдп: рд╕реНрд╡рдЪреНрдЫ рд╕рдВрд░реЗрдЦрдг рдФрд░ рд╕реНрдерд┐рддрд┐ рд╢рд░реАрд░ рдФрд░ рд╕реНрдерд┐рддрд┐ рд╢рд░реАрд░ рдХрд╛ рд╕реНрдкрд╖реНрдЯ рдкреГрдердХреНрдХрд░рдг
else
, catch
, finally
рдХреАрд╡рд░реНрдб, рд╕рд╛рде рд╣реА рдбреВ рдХреЗ рдХреАрд╡рд░реНрдб рдХреЗ рд╕рд╛рде / рдЬрдмрдХрд┐ рдПрдХ рд╣реА рд▓рд╛рдЗрди рдкрд░ рд▓реВрдк рдХрд░реЗрдВ рдЬреЛ рдкрд┐рдЫрд▓реЗ рд╕рдорд╛рдкрди рдХрд░реНрд▓реА рдмреНрд░реИрдХреЗрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рд╣реИ:
if (condition) {
рдпрджрд┐ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреА рд╢рд░реНрддреЛрдВ рдореЗрдВ рдХрдИ рдмреНрд▓реЙрдХ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рддреЛ рдЙрдиреНрд╣реЗрдВ рдЦрд╛рд▓реА рд▓рд╛рдЗрди рдХреЗ рд╕рд╛рде рдПрдХ рджреВрд╕рд░реЗ рд╕реЗ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХреА рдЬрд╛рддреА рд╣реИ:
private fun parsePropertyValue(propName: String, token: Token) { when (token) { is Token.ValueToken -> callback.visitValue(propName, token.value) Token.LBRACE -> {
when
рдШреБрдВрдШрд░рд╛рд▓реЗ рдмреНрд░реЗрд╕рд┐рдЬрд╝ рдХреЗ рдмрд┐рдирд╛ рдПрдХ рд╣реА рд▓рд╛рдЗрди рдкрд░ рдмрдпрд╛рди when
рддреЛ рдЫреЛрдЯреЗ рдмреНрд▓реЙрдХ рд░рдЦреЗрдВред
when (foo) { true -> bar()
рдорд╛рдкрджрдВрдбреЛрдВ рдХреА рдПрдХ рд▓рдВрдмреА рд╕реВрдЪреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдХреЛрд╖реНрдардХ рдХреЗ рдмрд╛рдж рд▓рд╛рдЗрди рдмреНрд░реЗрдХ рд▓рдЧрд╛рдПрдВред 4 рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░реЗрдВ рдФрд░ рддрд░реНрдХ рдХреЛ рдПрдХ рдкрдВрдХреНрддрд┐ рдкрд░ рддрд╛рд░реНрдХрд┐рдХ рд░реВрдк рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдХрд░реЗрдВред
drawSquare( x = 10, y = 10, width = 100, height = 100, fill = true )
рдкреИрд░рд╛рдореАрдЯрд░ рдирд╛рдо рдФрд░ рдЙрд╕рдХреЗ рдорд╛рди рдХреЗ рдмреАрдЪ рд╕рдорд╛рди рдЪрд┐рд╣реНрди рдХреЗ рдЖрд╕рдкрд╛рд╕ рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
рдЬрдВрдЬреАрд░ рдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рд░рдЦреЛ .
рдпрд╛ ?.
4 рд╕реНрдерд╛рдиреЛрдВ рдореЗрдВ рдПрдХ рдЗрдВрдбреЗрдВрдЯреЗрд╢рди рд╡рд╛рд▓реА рдирдИ рд▓рд╛рдЗрди рдкрд░ рдСрдкрд░реЗрдЯрд░:
val anchor = owner ?.firstChild!! .siblings(forward = true) .dropWhile { it is PsiComment || it is PsiWhiteSpace }
рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рдкрд╣рд▓реА рдХреЙрд▓ рдореЗрдВ рдЖрдо рддреМрд░ рдкрд░ рдЗрд╕рдХреЗ рд╕рд╛рдордиреЗ рдПрдХ рд▓рд╛рдЗрди рдмреНрд░реЗрдХ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рд╛рдорд╛рдиреНрдп рд╣реИ рдХрд┐ рдХреЛрдб рдмреЗрд╣рддрд░ рддрд░реАрдХреЗ рд╕реЗ рдкрдврд╝рд╛ рдЬрд╛рдП рдФрд░ рдпрд╣ рд╕рдордЭ рдореЗрдВ рди рдЖрдПред
рд▓реИрдореНрдмреНрдбрд╛ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдореЗрдВ, рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рдШреБрдВрдШрд░рд╛рд▓реЗ рдмреНрд░реЗрд╕рд┐рдЬрд╝ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдФрд░ рддреАрд░ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рд╢рд░реАрд░ рд╕реЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдЕрд▓рдЧ рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдХреЛрдИ рдХреЙрд▓ рдПрдХ рдПрдХрд▓ рд▓рдВрдмреЛ рдЪрд░рд┐рддреНрд░ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рдЬрдм рднреА рд╕рдВрднрд╡ рд╣реЛ, рдХреЛрд╖реНрдардХ рдХреЗ рдмрд╛рд╣рд░ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
list.filter { it > 10 }
рдПрдХ рд▓реИрдореНрдмреНрдбрд╛ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓реЗрдмрд▓ рдЕрд╕рд╛рдЗрди рдХрд░рддреЗ рд╕рдордп, рд▓реЗрдмрд▓ рдФрд░ рд╢реБрд░реБрдЖрддреА рдмреНрд░реЗрд╕ рдХреЗ рдмреАрдЪ рдПрдХ рд╕реНрдерд╛рди рди рд░рдЦреЗрдВ:
fun foo() { ints.forEach lit@{
рдорд▓реНрдЯреА-рд▓рд╛рдЗрди рд▓реИрдореНрдмреНрдбрд╛ рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рдореЗрдВ рдкреИрд░рд╛рдореАрдЯрд░ рдирд╛рдореЛрдВ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рддреЗ рд╕рдордп, рдирд╛рдореЛрдВ рдХреЛ рдкрд╣рд▓реЗ рд▓рд╛рдЗрди, рдлрд┐рд░ рдПрд░реЛ, рдФрд░ рдирдИ рд▓рд╛рдЗрди рдкрд░ рдлрдВрдХреНрд╢рди рдмреЙрдбреА рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рд░рдЦреЗрдВ:
appendCommaSeparated(properties) { prop -> val propertyValue = prop.get(obj)
рдпрджрд┐ рдкреИрд░рд╛рдореАрдЯрд░ рд╕реВрдЪреА рдПрдХ рд▓рд╛рдЗрди рдкрд░ рдлрд┐рдЯ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рддреЛ рддреАрд░ рдХреЛ рдПрдХ рдЕрд▓рдЧ рд▓рд╛рдЗрди рдкрд░ рд░рдЦреЗрдВ:
foo { context: Context, environment: Env -> context.configureEnv(environment) }
рдорд▓реНрдЯреА-рд▓рд╛рдЗрди рдкреНрд░рд▓реЗрдЦрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдПрдХ рдЕрд▓рдЧ рд▓рд╛рдЗрди рдкрд░ /**
рдбрд╛рд▓реЗрдВ, рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдмрд╛рдж рдХреА рд▓рд╛рдЗрди рдХреЛ рдПрдХ рддрд╛рд░рд╛рдВрдХрди рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░реЗрдВ:
рд▓рдШреБ рдкреНрд░рд▓реЗрдЦрди рдХреЛ рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рд░рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдкрд░рдо рдФрд░ рд░рд┐рдЯрд░реНрди рдЯреИрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдмрдЪреЗрдВред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рд╡рд┐рд╡рд░рдг рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВ рдФрд░ рдорд╛рдиреЛрдВ рдХреЛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рд╕реАрдзреЗ рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВ рдФрд░ рдЬрд╣рд╛рдБ рднреА рдЙрдирдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рд╣реИ, рдкреИрд░рд╛рдореАрдЯрд░ рд╕рдВрджрд░реНрдн рдЬреЛрдбрд╝реЗрдВред рдкрд░рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдФрд░ рдХреЗрд╡рд▓ рддрдм рд▓реМрдЯреЗрдВ рдЬрдм рдПрдХ рд▓рдВрдмреЗ рд╡рд┐рд╡рд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬреЛ рдореБрдЦреНрдп рдкрд╛рда рдХреЗ рдЕрд░реНрде рдореЗрдВ рдлрд┐рдЯ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред
рдЕрдирд╛рд╡рд╢реНрдпрдХ рдирд┐рд░реНрдорд╛рдгреЛрдВ рд╕реЗ рдмрдЪрдирд╛
рдХреЛрдЯрд▓рд┐рди рдореЗрдВ рдХрдИ рд╕рд┐рдВрдЯреИрдХреНрдЯрд┐рдХ рдирд┐рд░реНрдорд╛рдг рд╡реИрдХрд▓реНрдкрд┐рдХ рд╣реИрдВ рдФрд░ рд╡рд┐рдХрд╛рд╕ рдХреЗ рдорд╛рд╣реМрд▓ рдХреЛ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдЬрд╛рдЧрд░ рдХрд░рддреЗ рд╣реИрдВ, рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдХреЛрдб рдХреЛ "рд╕реНрдкрд╖реНрдЯ" рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рдЕрдкрдиреЗ рдХреЛрдб рдореЗрдВ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдХреАрд╡рд░реНрдб рдпреВрдирд┐рдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ, рдпреВрдирд┐рдЯ рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:
fun foo() {
рд╕реЗрдореАрдХреЛрд▓рди
рд╣рд░ рдЕрд╡рд╕рд░ рдкрд░ рдЕрд░реНрдзрд╡рд┐рд░рд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдмрдЪреЗрдВред
рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреИрдЯрд░реНрди
рдЯреЗрдореНрдкреНрд▓реЗрдЯ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЪрд░ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рддреЗ рд╕рдордп рдШреБрдВрдШрд░рд╛рд▓реЗ рдмреНрд░реЗрд╕рд┐рдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВред рдХреЗрд╡рд▓ рд▓рдВрдмреЗ рднрд╛рд╡реЛрдВ рдХреЗ рд▓рд┐рдП рдШреБрдВрдШрд░рд╛рд▓реЗ рдмреНрд░реЗрд╕рд┐рдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
println("$name has ${children.size} children")
рднрд╛рд╖рд╛ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рдореБрд╣рд╛рд╡рд░реЗрджрд╛рд░ рдЙрдкрдпреЛрдЧ
рдЕрдЪрд▓рддрд╛
рдЙрддреНрдкрд░рд┐рд╡рд░реНрддрд┐рдд рдбреЗрдЯрд╛ рд╕реЗ рдкрд╣рд▓реЗ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдбреЗрдЯрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реЛрддрд╛ рд╣реИред рд╣рдореЗрд╢рд╛ рд╡реИрд░рд┐рдПрдмрд▓ рдФрд░ рдкреНрд░реЙрдкрд░реНрдЯреАрдЬ рдХреЛ val
рдШреЛрд╖рд┐рдд рдХрд░реЗрдВ, рди рдХрд┐ var
, рдЬрдм рддрдХ рдХрд┐ рд╡реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд╣реАрдВ рдмрджрд▓рддреЗред
рд╕рдВрдЧреНрд░рд╣ рдмрджрд▓рдиреЗ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдореЗрд╢рд╛ Collection
рд╕рдВрдЧреНрд░рд╣ рдЗрдВрдЯрд░рдлреЗрд╕ ( Collection
, List
, Set
, Map
) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рд╣рд░ рдЕрд╡рд╕рд░ рдкрд░, рд╕рдВрдЧреНрд░рд╣ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░рдЦрд╛рдиреЗ рдХреЗ рддрд░реАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдПрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдЬреЛ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╕рдВрдЧреНрд░рд╣ рд▓реМрдЯрд╛рддрд╛ рд╣реИ:
: .
.
[Type alias]
, , :
typealias MouseClickHandler = (Any, MouseEvent) -> Unit typealias PersonIndex = Map<String, Person>
-
-, , it
. - .
-
. - , . , - .
( @
) .
, , boolean
, .
drawSquare(x = 10, y = 10, width = 100, height = 100, fill = true)
try
, if
when
, return
:
return if (x) foo() else bar()
if
when
if
when
when (x) { null -> ... else -> ... } if (x == null) ... else ...
, when
.
Boolean?
Boolean?
, if (value == true)
if (value == false)
, if (value ?: false)
if (value != null && value)
.
filtet
, map
.. . : forEach
( for
null forEach
)
, , , .
until
( ):
for (i in 0..n - 1) { ... }
.
\n
escape- .
, trimIndent
, , trimMargin
, :
assertEquals( """ Foo Bar """.trimIndent(), value ) val a = """if(a > 1) { | return a |}""".trimMargin()
. , , .
:
. , , , , . API, , . , .
infix
, , . : and
, to
, zip
. : add
.
infix
, .
, , . , , . , , .
class Point(val x: Double, val y: Double) { companion object { fun fromPolar(angle: Double, radius: Double) = Point(...) } }
, , .
: , , Kotlin null
, null
public
/, , Kotlin:
fun apiCall(): String = MyJavaApi.getProperty("name")
(package-level class-level) Kotlin:
class Person { val name: String = MyJavaApi.getProperty("name") }
, , Kotlin :
fun main() { val name = MyJavaApi.getProperty("name") println(name) }
apply
/ with
/ run
/ also
/ let
Kotlin . , :
- ? , ,
it
, this
( also
let
). also
, .
- ? ,
apply
also
. , with
, let
run
.
- null ? ,
apply
, let
run
. , with
also
.
API:
- ( API)
- ( )
- KDoc public api, , /