เชจเชตเชพ เชตเชฐเซเชท 2020 เชจเซ เชธเซเชจเซ เชถเซเชญเซเชเซเชเชพเช.
เชชเซเชฐเชฅเชฎ เชจเชพ เชชเซเชฐเชเชพเชถเชจ เชฅเซ
เช เชตเชฐเซเชท เชฆเชฐเชฎเชฟเชฏเชพเชจ, เชญเชพเชทเชพเชฎเชพเช เชเชฃเซ เชธเซเชงเชพเชฐเซ เชเชฐเชตเชพเชฎเชพเช เชเชตเซเชฏเซ เชเซ, เชคเซเชจเชพ เชเชฃเชพ เชชเชพเชธเชพเช เชชเชฐ เชตเชฟเชเชพเชฐ เชเชฐเชตเชพเชฎเชพเช เชเชตเซเชฏเซ เชเซ เช เชจเซ เชตเชฟเชเชพเชธ เชตเซเชเซเชเชฐ เชจเชเซเชเซ เชเชฐเชตเชพเชฎเชพเช เชเชตเซเชฏเซ เชเซ.
เชเซ เชคเชฎเชพเชฎ เชธเชฎเซเชฆเชพเชฏ เชธเชพเชฅเซ เชถเซเชฐ เชเชฐเชตเชพเชฎเชพเช เชฎเชจเซ เชเชจเชเชฆ เชฅเชพเชฏ เชเซ.
เชเชตเชพเชฌเชฆเชพเชฐเซเชจเซ เชเชจเชเชพเชฐ
เช เชชเซเชฐเซเชเซเชเซเช เชซเชเซเชค เชเชคเซเชธเชพเชน เชชเชฐ เชตเชฟเชเชธเชพเชตเชตเชพเชฎเชพเช เชเชตเซ เชฐเชนเซเชฏเซ เชเซ เช เชจเซ เชเชคเชฟเชถเซเชฒ เชชเซเชฐเซเชเซเชฐเชพเชฎเชฟเชเช เชญเชพเชทเชพเชเชจเชพ เชเซเชทเซเชคเซเชฐเชฎเชพเช เชตเชฟเชถเซเชตเชจเชพ เชตเชฐเซเชเชธเซเชตเชจเซ เชกเซเชณ เชเชฐเชคเซ เชจเชฅเซ!
เชคเชฎเชพเชฐเซ เช เชตเชฟเชเชพเชธเชจเซ เชเช เชงเซเชฐเชฃ เชคเชฐเซเชเซ เชงเซเชฏเชพเชจเชฎเชพเช เชฒเซเชตเซเช เชเซเชเช เชจเชนเซเช เชเซ เชเซเชจเชพ เชฎเชพเชเซ เชคเชฎเชพเชฐเซ เชชเซเชฐเชฏเชคเซเชจ เชเชฐเชตเชพเชจเซ เชเชฐเซเชฐ เชเซ, เชชเซเชฐเซเชเซเชเซเช เชเชฆเชฐเซเชถ เชจเชฅเซ, เชชเชฐเชเชคเซ เชคเซเชฎ เชเชคเชพเช เชคเซ เชตเชฟเชเชพเชธ เชชเชพเชฎเซ เชเซ.
เชจเชตเซเช เชเชฎเซเชชเชพเชเชฒเชฐ
เชชเซเชฐเซเชเซเชเซเช เชฐเซเชชเซเชเซเชเชฐเซเชจเซ /mashc เชถเชพเชเชพเชฎเชพเช, เชคเชฎเซ เชเชฎเซเชชเชพเชเชฒเชฐเชจเซเช เชจเชตเซเช เชธเชเชธเซเชเชฐเชฃ เชเซเช เชถเชเซ เชเซ, เชเซ Mash (เชญเชพเชทเชพเชจเซเช เชชเซเชฐเชฅเชฎ เชธเชเชธเซเชเชฐเชฃ) เชฎเชพเช เชฒเชเซเชฒเซเช เชเซ.
เชเชฎเซเชชเชพเชเชฒเชฐ เชชเชพเชธเซ asm เชธเซเชเชฟเชฎเชพเช เชเซเชก เชเชจเชฐเซเชเชฐ เชเซ (เชธเซเชเซเช VM เชนเซเช เชณ เชเชธเซเชฎเซเชฌเชฒเชฐ เชฎเชพเชเซ).
เช เชเซเชทเชฃเซ เชนเซเช Java (JDK 1.8) เชฎเชพเชเซ เชเชจเชฐเซเชเชฐเชจเซเช เชธเชเชธเซเชเชฐเชฃ เชตเชฟเชเชธเชพเชตเซ เชฐเชนเซเชฏเซ เชเซเช.
เชเชฎเซเชชเชพเชเชฒเชฐเชจเซเช เชจเชตเซเช เชธเชเชธเซเชเชฐเชฃ เชญเชพเชทเชพเชจเชพ เชชเซเชฐเชฅเชฎ เชธเชเชธเซเชเชฐเชฃเชจเซ เชเชพเชฐเซเชฏเชเซเชทเชฎเชคเชพเชจเซ เชธเชเชชเซเชฐเซเชฃเชชเชฃเซ เชธเชฎเชฐเซเชฅเชจ เชเชชเซ เชเซ เช เชจเซ เชคเซเชจเซ เชชเซเชฐเช เชฌเชจเชพเชตเซ เชเซ.
เชจเชตเซเช OOP
เชญเชพเชทเชพเชจเชพ เชจเชตเชพ เชธเชเชธเซเชเชฐเชฃเชฎเชพเช, เชตเชฐเซเชเซ เชธเชพเชฅเซเชจเชพ เชเชพเชฐเซเชฏเชจเซ เชเชเชเช เช
เชเชถเซ เชซเชฐเซเชฅเซ เชกเชฟเชเชพเชเชจ เชเชฐเชตเชพเชฎเชพเช เชเชตเซเชฏเซเช เชเซ.
เชตเชฐเซเช เชชเชฆเซเชงเชคเชฟเช เชตเชฐเซเชเชจเชพ เชฎเซเชเซเชฏ เชญเชพเชเชฎเชพเช เช
เชจเซ เชคเซเชจเซ เชฌเชนเชพเชฐ เชฌเชเชจเซ เชฐเซเชคเซ เชเชพเชนเซเชฐ เชเชฐเซ เชถเชเชพเชฏ เชเซ.
เชตเชฐเซเชเชฎเชพเช เชนเชตเซ เชธเซเชชเชทเซเช เชเชจเซเชธเซเชเซเชฐเชเซเชเชฐ เชเซ: init.
เชเซเชก เชเชฆเชพเชนเชฐเชฃ:
...
class MyClass:
private:
var a, b
public:
init(a, b):
$a ?= a
$b ?= b
end
func Foo():
return $a + $b
end
end
func MyClass::Bar(c):
return $a + $b + c
end
...
เชเซ เชตเชพเชฐเชธเซ เชฎเชณเซ, เชคเซ เช เชฎเชพเชฐเซ เชชเชพเชธเซ เชตเชพเชฐเชธเชพเชเชค เชเซเชฒเซเชธ (เชธเซเชชเชฐ) เชธเชฐเชณเชคเชพเชฅเซ เชเชฐเชตเชพเชจเซ เชเซเชทเชฎเชคเชพ เชเซ.
เชเซเชก เชเชฆเชพเชนเชฐเชฃ:
...
class MySecondClass(MyClass):
public:
var c
init(a, b, c):
super(a, b)
$c ?= c
end
func Bar():
super($c)
end
end
...
x ?= new MySecondClass(10, 20, 30)
println( x -> Bar() ) // 60
เชตเชฐเซเชเชจเชพ เชฆเชพเชเชฒเชพเช เชฎเชพเชเซ เชชเชฆเซเชงเชคเชฟเชเชจเซเช เชเชคเชฟเชถเซเชฒ เชเชตเชฐเชฐเชพเชเชกเชฟเชเช:
...
func Polymorph::NewFoo(c):
return $a + $b + c
end
...
x -> Foo ?= Polymorph -> NewFoo
x -> Foo(30) // 60
เชชเซเชเซเชเซ / เชจเซเชฎเชธเซเชชเซเชธ
เชจเซเชฎเชธเซเชชเซเชธ เชธเซเชตเชเซเช เชฐเชนเซเชตเซ เชเซเชเช!
เชคเชฆเชจเซเชธเชพเชฐ, เชญเชพเชทเชพเช เช เชคเช เชชเซเชฐเซ เชชเชพเชกเชตเซ เชเซเชเช.
Mash เชฎเชพเช, เชเซ เชตเชฐเซเช เชชเชฆเซเชงเชคเชฟ เชธเซเชฅเชฟเชฐ เชนเซเชฏ, เชคเซ เชคเซเชจเซ เชเซเชกเชจเชพ เชเซเชเชชเชฃ เชญเชพเชเชฎเชพเชเชฅเซ เชธเซเชฐเชเซเชทเชฟเชค เชฐเซเชคเซ เชเซเชฒ เชเชฐเซ เชถเชเชพเชฏ เชเซ.
เชเชฆเชพเชนเชฐเชฃ:
...
class MyPackage:
func MyFunc(a, b):
return a + b
end
end
...
println( MyPackage -> MyFunc(10, 20) ) // 30
เชฎเชพเชฐเซเช เชฆเซเชตเชพเชฐเชพ, เชธเซเชชเชฐ เชเชชเชฐเซเชเชฐ เชเชตเชพ เชเซเชฒ เชธเชพเชฅเซ เชฏเซเชเซเชฏ เชฐเซเชคเซ เชเชพเชฐเซเชฏ เชเชฐเชถเซ.
เช เชชเชตเชพเชฆเซ
เชญเชพเชทเชพเชจเชพ เชจเชตเชพ เชธเชเชธเซเชเชฐเชฃเชฎเชพเช, เชคเซเชเชจเซ เชตเชฐเซเชเซเชจเซ เชเซเชฎ เชเชฃเชตเชพเชฎเชพเช เชเชตเซ เชเซ:
...
try:
raise new Exception(
"My raised exception!"
)
catch E:
if E is Exception:
println(E)
else:
println("Unknown exception class!")
end
end
...
เชจเชตเซเช enum
เชนเชตเซ เชเชฃเชคเชฐเซเชจเชพ เชเชเชเซเชจเซ เชธเชคเชค เชฎเซเชฒเซเชฏเซ เช เชธเชพเชเชจ เชเชฐเซ เชถเชเชพเชฏ เชเซ:
enum MyEnum [
meFirst = "First",
meSecond = 2,
meThird
]
...
k ?= meSecond
...
if k in MyEnum:
...
end
เชเชฎเซเชฌเซเชกเซเชก PL
เชธเชเชญเชตเชฟเชค เชฐเซเชคเซ - เชฎเซเชถ เชฒเซเชเชจเซ เชเซเชฎ เชเชฎเซเชฌเซเชก เชเชฐเซ เชถเชเชพเชฏ เชคเซเชตเซ เชชเซเชฐเซเชเซเชฐเชพเชฎเชฟเชเช เชญเชพเชทเชพ เชคเชฐเซเชเซ เชคเซเชจเซเช เชตเชฟเชถเชฟเชทเซเช เชธเซเชฅเชพเชจ เชถเซเชงเซ เชถเชเซ เชเซ.
เช เชนเซเชคเซเช เชฎเชพเชเซ เชฎเซเชถเชจเซ เชเชชเชฏเซเช เชถเชฐเซ เชเชฐเชตเชพ เชฎเชพเชเซ, เชคเชฎเชพเชฐเซ เชชเซเชฐเซเชเซเชเซเช เชเชพเชคเซ เชฌเชจเชพเชตเชตเชพเชจเซ เชชเชฃ เชเชฐเซเชฐ เชจเชฅเซ.
Mash เชชเชพเชธเซ เชฐเชจเชเชพเชเชฎ เชเชจเซเชตเชพเชฏเชฐเซเชจเชฎเซเชจเซเช เชเซ - เชธเชเชชเซเชฐเซเชฃ API เชธเชพเชฅเซ เชกเชพเชฏเชจเซเชฎเชฟเช เชฒเชพเชเชฌเซเชฐเซเชฐเซ เชคเชฐเซเชเซ เชฌเชจเซเชฒ เชธเซเชเซเช VM.
เชคเชฎเชพเชฐเซ เชซเชเซเชค เชคเซเชจเซ เชชเซเชฐเซเชเซเชเซเช เชจเชฟเชฐเซเชญเชฐเชคเชพเชฎเชพเช เชเชฎเซเชฐเชตเชพเชจเซ เช เชจเซ เชฅเซเชกเชพ เชเซเชฒเซเชธ เชเชฐเชตเชพเชจเซ เชเชฐเซเชฐ เชเซ.
เชญเชพเชทเชพ เชชเซเชคเซ เช เชเชฎเซเชฌเซเชกเซเชก เชญเชพเชทเชพ เชคเชฐเซเชเซ เชเชพเชฐเซเชฏ เชเชฐเชตเชพ เชฎเชพเชเซ เชเชพเชฐเซเชฏเชเซเชทเชฎเชคเชพ เชชเซเชฐเชฆเชพเชจ เชเชฐเซ เชเซ.
เชคเซ เช เชธเชฎเชฏเซ, เชญเชพเชทเชพ เช
เชจเซ เชคเซเชคเซเชฏ-เชชเชเซเชท เชชเซเชธเซเชคเชเชพเชฒเชฏเซ เชธเชพเชฅเซ เชเซเชกเชพเชฃเชฎเชพเช เชเชพเชฎเชเซเชฐเซเชจเซเช เชเชฒเซเชฒเชเชเชจ เชฅเชคเซเช เชจเชฅเซ.
เช
เชฎเชจเซ เชเชฎเซเชฌเซเชกเซเชฌเชฒ เชญเชพเชทเชพ เชฎเชณเซ เชเซ เชเซ เชคเซเชฎเชพเช เชฒเชเซเชฒเชพ เชตเชฟเชตเชฟเชง เชซเซเชฐเซเชฎเชตเชฐเซเชเชจเซ เชธเชเชชเซเชฐเซเชฃ เชถเชเซเชคเชฟเชจเซ เชเชชเชฏเซเช เชเชฐเซ เชถเชเซ เชเซ.
เชฎเซเชถ + JVM
JVM เชฎเชพเชเซ เช
เชจเซเชตเชพเชฆเชเชจเซเช เชธเชเชธเซเชเชฐเชฃ เชตเชฟเชเชธเชพเชตเชตเชพเชจเซเช เชถเชฐเซ เชเชฐเซเชฏเซเช.
เชเชฆเชพเช, N-th เชธเชฎเชฏ เชชเชเซ, เช เชตเชฟเชทเชฏ เชชเชฐเชจเซ เชชเซเชธเซเช Habrรฉ เชชเชฐ เชฆเซเชเชพเชถเซ.
เชชเชฐเชฟเชฃเชพเชฎเซ
เชคเซเชฏเชพเช เชเซเช เชเซเชเซเชเชธ เชชเชฐเชฟเชฃเชพเชฎเซ เชจเชฅเซ. เช เชชเชฐเชฟเชฃเชพเชฎเซเชจเซ เชฎเชงเซเชฏเชตเชฐเซเชคเซ เชฐเชเซเชเชค เชเซ.
2020 เชฎเชพเช เชฆเชฐเซเชเชจเซ เชถเซเชญเชเชพเชฎเชจเชพเช.
เชธเซเชฐเซเชธ: www.habr.com