рдЖрдЬ, рдЕрдВрдд рдореЗрдВ, рд╕реНрдХреИрд▓рд╛ 2.10.0 рдХрд╛ рдЕрдВрддрд┐рдо рд╕рдВрд╕реНрдХрд░рдг рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдирдИ рд╕реБрд╡рд┐рдзрд╛рдПрдБ:
рдореВрд▓реНрдп рд╡рд░реНрдЧ
рдХрд╕реНрдЯрдо рдХрдХреНрд╖рд╛рдПрдВ рдЕрдм AnyVal рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓ рд╕рдХрддреА рд╣реИрдВ (рдкрд╣рд▓реЗ рдпрд╣ AnyRef рд╕реЗ рд╣реА рд╕рдВрднрд╡ рдереА)ред рдпрд╣ рд▓рд┐рдкрдЯреЗ рд╡рд░реНрдЧ рдХреЗ рд╕рд╛рде рдУрд╡рд░рд╣реЗрдб рдХреА рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рдХрд╛рд░рдг рдЕрдзрд┐рдХ рдЙрддреНрдкрд╛рджрдХрддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рдмрдирд╛рддрд╛ рд╣реИред
class Wrapper(val underlying: Int) extends AnyVal
рдХрдХреНрд╖рд╛ рдореЗрдВ рдПрдХ рдПрдХрд▓, рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╡реИрд▓ рдкреИрд░рд╛рдореАрдЯрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬрд┐рд╕ рдкреНрд░рдХрд╛рд░ рдХрд╛ рд░рдирдЯрд╛рдЗрдо рдореЗрдВ рдЖрдкрдХреА рдХрдХреНрд╖рд╛ рдХрд╛ рдкреНрд░рдХрд╛рд░ рд╣реЛрдЧрд╛ред
рдЬреЗрд╡реАрдПрдо рдХреЗ рд╡рд░реНрддрдорд╛рди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдХрд╛рд░рдг рдХреБрдЫ рд╕реАрдорд╛рдПрдВ рд╣реИрдВред
docs.scala-lang.org/overviews/core/value-classes.htmlрдЗрдореНрдкреНрд▓рд┐рдХреНрдЯ рдХреНрд▓рд╛рд╕
рдирд┐рд╣рд┐рдд рдХреАрд╡рд░реНрдб рдЕрдм рди рдХреЗрд╡рд▓ рддрд░реАрдХреЛрдВ рдкрд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рдХрдХреНрд╖рд╛рдУрдВ рдореЗрдВ рднреА рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдореМрдЬреВрджрд╛ рд╡рд░реНрдЧреЛрдВ рдХреЗ рд╡рд┐рд╕реНрддрд╛рд░ рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдФрд░ рдирд┐рд╣рд┐рдд рддрд░реАрдХреЛрдВ рдкрд░ рд▓реЛрдб рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдЙрдирдХреЗ рдкрд╛рд╕ рдХреЗрд╡рд▓ рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ (рдЕрдзрд┐рдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЕрдЧрд░ рдмрд╛рдХреА рдирд┐рд╣рд┐рдд рд╣реИрдВ)ред рдХреЗрд╡рд▓ рддрд░реАрдХреЛрдВ рдХреЛ рдПрдХ рд╡рд░реНрдЧ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдПрдХ рдЕрдкрд╡рд╛рдж рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдкреИрд░рд╛рдореАрдЯрд░ рд╣реИред
рд╡рд╛рдХреНрдп рд░рдЪрдирд╛:
implicit class RichInt(n: Int) extends Ordered[Int] { def min(m: Int): Int = if (n <= m) n else m }
docs.scala-lang.org/sips/pending/implicit-classes.htmlрд╕реНрдЯреНрд░рд┐рдВрдЧ рдЗрдВрдЯрд░рдкреЛрд▓реЗрд╢рди
val lang = "Scala" println(s"- $lang !")
рд╕рдВрдХрд▓рдХ рджреНрд╡рд╛рд░рд╛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдкреНрд░рдХреНрд╖реЗрдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕рдХреЗ рд╕рд╛рдордиреЗ рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╡рд┐рдзрд┐ рдЬреЛрдбрд╝реА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдП - рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЗрдВрдЯрд░рдкреЛрд▓рд░ред рдмреЙрдХреНрд╕ рдореЗрдВ рд╕реЗ рддреАрди рдЗрдВрдЯрд░рдкреЛрд▓рд░ рд╣реИрдВ: рдПрд╕, рдПрдл рдФрд░ рд░реЙред
рдПрд╕ рдЖрдкрдХреЛ рдЪрд░ (рдЖрдк рдЙрдирдХреЗ рд╕рд╛рдордиреЗ $ рдбрд╛рд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ) рдФрд░ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ ($ {} рдореЗрдВ рд╕рдВрд▓рдЧреНрди рдХрд░реЗрдВ), рдкреБрд░рд╛рдиреЗ рд╕реНрд╡рд░реВрдк рдХреА рдПрдл рдкреНрд░рд╛рд░реВрдк рдореЗрдВ, рдЕрдЪреНрдЫрд╛ рдкреНрд░рд┐рдВрдЯрдл, рдФрд░ рдХрдЪреНрдЪреЗ рдХреЗ рд╕рд╛рде рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдирд╛рдо рд╕реЗ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЖрдк рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдПрд╕реНрдХреЗрдк рджреГрд╢реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдПрд╕реНрдХреЗрдк рд╕реАрдХреНрд╡реЗрдВрд╕) - рдкреНрд░рд┐рдВрдЯреНрд▓рди (рдХрдЪреНрдЪреЗ "рдХреБрдЫ \ ntext") рдПрдХ рд▓рд╛рдЗрди рдХреЛ рдкреНрд░рд┐рдВрдЯ рдХрд░рддрд╛ рд╣реИ, рджреЛ рдХреЛ рдирд╣реАрдВред
рдпрд╣ рдЕрднреА рддрдХ рдкреИрдЯрд░реНрди рдорд┐рд▓рд╛рди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди 2.11 рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХрд╛ рд╡рд╛рджрд╛ рдХрд░рддрд╛ рд╣реИ
val height = 1.9d val name = "James" println(f"$name%s is $height%2.2f meters tall")
docs.scala-lang.org/overviews/core/string-interpolation.htmlрд╡рд╛рдпрджрд╛ рдФрд░ рд╡рд╛рджрд╛
рд╕рдорд╛рдирд╛рдВрддрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдирдИ рд╕реБрд╡рд┐рдзрд╛рдПрдБред рд╡рд┐рдЪрд╛рд░ рдпрд╣ рд╣реИ: рдЖрдк рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдПрдХ рдорд╛рди рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЕрднреА рддрдХ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдЬреЛ рдПрдХ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдЕрдиреБрд░реЛрдз рдХрд░рддрд╛ рд╣реИред
import scala.concurrent._ import ExecutionContext.Implicits.global val session = socialNetwork.createSessionFor("user", credentials) val f: Future[List[Friend]] = future { session.getFriends() }
docs.scala-lang.org/overviews/core/futures.htmlрдЧрддрд┐рд╢реАрд▓
рд╕реНрдерд┐рд░ рдЯрд╛рдЗрдкрд┐рдВрдЧ рдХреЗ рдХреБрдЫ рдиреБрдХрд╕рд╛рдиреЛрдВ рдХреЛ рджреВрд░ рдХрд░рддрд╛ рд╣реИред
рдпрджрд┐ рдЖрдкрдиреЗ рдЗрд╕ рд╡рд░реНрдЧ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╡рд┐рдзрд┐ рдирд╣реАрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХреА рд╣реИ рдФрд░ scala.Dynamic рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рд╡рд┐рдзрд┐ рдХреЙрд▓ рдХреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
docs.scala-lang.org/sips/pending/type-dynamic.htmlрдЖрд╢реНрд░рд┐рдд рд╡рд┐рдзрд┐ рдкреНрд░рдХрд╛рд░
def identity(x: AnyRef): x.type = x
рдирдИ ASM- рдЖрдзрд╛рд░рд┐рдд рдмрд╛рдпреЛрдЯреЗрдХ рдХрдВрдкрд╛рдЗрд▓рд░
рдЬреЗрдбреАрдХреЗ 1.5, 1.6 рдФрд░ 1.7 рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ 1.6 рдХреЗ рд▓рд┐рдП рдмрд╛рдпрдЯреЗрдХреЛрдб рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред рдЬрдирд░реЗрдЯрд░ 1.5 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдирд╣реАрдВ рдХреА рдЬрд╛рддреА рд╣реИ (рдкрджрд╛рд╡рдирдд)ред
рдирдпрд╛ рдкреИрдЯрд░реНрди рдорд┐рд▓рд╛рди
рдмреЗрд╣рддрд░ рдХреЛрдб (рдХреЛрдИ рдЕрдзрд┐рдХ
рдШрд╛рддреАрдп рд╡рд┐рд╕реНрдлреЛрдЯ ) рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЦрд░реЛрдВрдЪ рд╕реЗ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ред рдЕрдм рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдФрд░ рдХреЛрдб рдкреАрдврд╝реА рд╕реНрд╡рддрдВрддреНрд░ рд╣реИрдВ (рдкрд╣рд▓реЗ рдХреЛ -Xno-patmat-analysis рд╕реНрд╡рд┐рдЪ рдХреЗ рд╕рд╛рде рдЕрдХреНрд╖рдо рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ)ред
рд╕реБрдкреАрд░рд┐рдпрд░ рд╕реНрдХреЗрд▓рдбреЙрдХ
- рдЗрдВрдкреНрд▓рд┐рд╕рд┐рдЯ (-рдЗрдореНрдкреНрд▓рд┐рд╕рд┐рдЯреНрд╕ рд╕реНрд╡рд┐рдЪ)
- рдЪрд╛рд░реНрдЯ (-рджрд┐рдорд╛рдЧ рдХреА рдЪрд╛рдмреА, рдЧреНрд░рд╛рдлрд╡рд┐рдЬрд╝ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛)
- рд╕рдореВрд╣ (рд╕рдореВрд╣)
рд╕рдорд╛рд░реЛрд╣ рдореЗрдВ рд╕рдВрд╢реЛрдзрди
рдХреБрдЫ рдЙрдиреНрдирдд рдФрд░ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЕрдм рдЖрдкрдХреЛ рдЙрдиреНрд╣реЗрдВ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
docs.scala-lang.org/sips/pending/modularizing-language-features.htmlрдЕрдХреНрдХрд╛ рдЕрднрд┐рдиреЗрддрд╛ рдЕрдм рдорд╛рдирдХ
рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рд╕реБрдзрд╛рд░ рд╣реБрдЖ
- рддреЗрдЬрд╝ рдЗрдирд▓рд╛рдЗрдирд░
- `рд░реЗрдВрдЬ # рдпреЛрдЧ рдЕрдм O (1) рд╣реИ
- ForkJoin рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЕрдкрдбреЗрдЯ
- рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп TreeSet / TreeMap рдореЗрдВ рд╕реБрдзрд╛рд░
- PartialFunctions рдХреЗ рд▓рд┐рдП рд╕реБрдзрд╛рд░
рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ ??? рдФрд░ NotImplementedError
IsTraversableOnce рдФрд░ IsTraversableLike рдХрдХреНрд╖рд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛
рдлрд╝реНрд▓реЛрдЯрд┐рдВрдЧ рдкреЙрдЗрдВрдЯ рдФрд░ рдСрдХреНрдЯрд▓ рдирдВрдмрд░реЛрдВ рдХреЗ рд▓рд┐рдП рд╕рд╛рд╣рд┐рддреНрдп рдЕрдм рдкрджрд╛рд╡рдирдд рд╣реИрдВ
рд╣рдЯрд╛рдП рдЧрдП scala.dbc
рдкреНрд░рд╛рдпреЛрдЧрд┐рдХ рдЕрд╡рд╕рд░
2.9.2 рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреА рдкреВрд░реА рд╕реВрдЪреА