2020เดฒเต เดชเตเดคเตเดตเตผเดทเดคเตเดคเดฟเตฝ เดเดฒเตเดฒเดพเดตเตผเดเตเดเตเด เดเดถเดเดธเดเตพ.
เดเดฆเตเดฏ เดชเตเดฐเดธเดฟเดฆเตเดงเตเดเดฐเดฃเด เดฎเตเดคเตฝ
เด เดตเตผเดทเด, เดญเดพเดท เดตเดณเดฐเตเดฏเดงเดฟเดเด เดฎเตเดเตเดเดชเตเดชเตเดเตเดคเตเดคเดฟ, เด เดคเดฟเดจเตเดฑเต เดชเดฒ เดตเดถเดเตเดเดณเตเด เดเดฟเดจเตเดคเดฟเดเตเดเตเดเดฏเตเด เดตเดฟเดเดธเดจเดคเตเดคเดฟเดจเตเดฑเต เดตเตเดเตเดฑเตเดฑเตผ เดจเดฟเตผเดฃเตเดฃเดฏเดฟเดเตเดเตเดเดฏเตเด เดเตเดฏเตเดคเต.
เดเดคเตเดฒเตเดฒเดพเด เดธเดฎเตเดนเดตเตเดฎเดพเดฏเดฟ เดชเดเตเดเตเดตเตเดเตเดเตเดจเตเดจเดคเดฟเตฝ เดธเดจเตเดคเตเดทเดฎเตเดฃเตเดเต.
เดจเดฟเดฐเดพเดเดฐเดฃเด
เด เดชเตเดฐเตเดเดเตเดฑเตเดฑเต เดเดคเตเดธเดพเดนเดคเตเดคเดฟเตฝ เดฎเดพเดคเตเดฐเด เดตเดฟเดเดธเดฟเดชเตเดชเดฟเดเตเดเตเดเตเดเตเดเตเดจเตเดจเต, เดกเตเดจเดพเดฎเดฟเดเต เดชเตเดฐเตเดเตเดฐเดพเดฎเดฟเดเดเต เดญเดพเดทเดเดณเตเดเต เดฎเตเดเดฒเดฏเดฟเตฝ เดฒเตเด เดเดงเดฟเดชเดคเตเดฏเด เดจเดเดฟเดเตเดเตเดจเตเดจเดฟเดฒเตเดฒ!
เด เดตเดฟเดเดธเดจเด เดชเดฐเดฟเดถเตเดฐเดฎเดฟเดเตเดเตเดฃเตเด เดเดฐเต เดฎเดพเดจเดฆเดฃเตเดกเดฎเดพเดฏเดฟ เดเดฃเดเตเดเดพเดเตเดเดฐเตเดคเต; เดชเดฆเตเดงเดคเดฟ เด เดจเตเดฏเตเดเตเดฏเดฎเดฒเตเดฒ, เดเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด เด เดคเต เดตเดฟเดเดธเดฟเดเตเดเตเดเตเดฃเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต.
เดธเดพเดฎเตเดนเดฟเดเด
เดตเตเดฌเตเดธเตเดฑเตเดฑเต
เดซเตเดพเดฑเด
เดชเตเดคเดฟเดฏ เดเดฎเตเดชเตเดฒเตผ
เดชเตเดฐเตเดเดเตเดฑเตเดฑเต เดฑเดฟเดชเตเดชเตเดธเดฟเดฑเตเดฑเดฑเดฟเดฏเตเดเต /mashc เดฌเตเดฐเดพเดเตเดเดฟเตฝ, เดจเดฟเดเตเดเตพเดเตเดเต เดเดฎเตเดชเตเดฒเดฑเดฟเดจเตเดฑเต เดเดฐเต เดชเตเดคเดฟเดฏ เดชเดคเดฟเดชเตเดชเต เดเดพเดฃเดพเตป เดเดดเดฟเดฏเตเด, เด เดคเต เดฎเดพเดทเดฟเตฝ เดเดดเตเดคเดฟเดฏเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต (เดญเดพเดทเดฏเตเดเต เดเดฆเตเดฏ เดชเดคเดฟเดชเตเดชเต).
เดเดเดชเตเดฒเดฑเดฟเดจเต asm เดฒเดฟเดธเตเดฑเตเดฑเดฟเดเดเดฟเตฝ เดเดฐเต เดเตเดกเต เดเดจเดฑเตเดฑเตเดฑเตผ เดเดฃเตเดเต (เดเดฐเต เดธเตเดฑเตเดฑเดพเดเตเดเต เด
เดเดฟเดธเตเดฅเดพเดจเดฎเดพเดเตเดเดฟเดฏเตเดณเตเดณ VM-เดจเตเดณเตเดณ เด
เดธเดเดฌเตเดฒเดฑเดฟเดจเต).
เดจเดฟเดฒเดตเดฟเตฝ เดเดพเตป เดเดพเดตเดฏเตโเดเตเดเดพเดฏเตเดณเตเดณ เดเดจเดฑเตเดฑเตเดฑเดฑเดฟเดจเตเดฑเต เดเดฐเต เดชเดคเดฟเดชเตเดชเต เดตเดฟเดเดธเดฟเดชเตเดชเดฟเดเตเดเตเดเดฏเดพเดฃเต (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
เดชเดพเดเตเดเตเดเตเดเตพ/เดจเดพเดเดธเตเดชเตเดธเตเดเตพ
เดจเตเดฏเดฟเดเดธเตเดชเตเดธเต เดตเตเดคเตเดคเดฟเดฏเดพเดฏเดฟ เดคเตเดเดฐเดฃเด!
เด
เดคเดจเตเดธเดฐเดฟเดเตเดเต, เดญเดพเดท เด เด
เดตเดธเดฐเด เดจเตฝเดเดฃเด.
เดฎเดพเดทเดฟเตฝ, เดเดฐเต เดเตเดฒเดพเดธเต เดฐเตเดคเดฟ เดธเตเดฑเตเดฑเดพเดฑเตเดฑเดฟเดเต เดเดฃเตเดเตเดเดฟเตฝ, เด
เดคเต เดเตเดกเดฟเดจเตเดฑเต เดเดคเต เดญเดพเดเดคเตเดคเตเดจเดฟเดจเตเดจเตเด เดธเตเดฐเดเตเดทเดฟเดคเดฎเดพเดฏเดฟ เดตเดฟเดณเดฟเดเตเดเดพเด.
เดเดฆเดพเดนเดฐเดฃเด:
...
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
เดเตพเดเตเดเตเตผเดคเตเดค เดญเดพเดท
เดธเดพเดงเตเดฏเดคเดฏเดจเตเดธเดฐเดฟเดเตเดเต, เดฒเตเดตเดพเดฏเตเดเตเดเต เดธเดฎเดพเดจเดฎเดพเดฏ เดเดฐเต เดเดเดฌเดกเดกเต เดชเตเดฐเตเดเตเดฐเดพเดฎเดฟเดเดเต เดญเดพเดทเดฏเดพเดฏเดฟ เดฎเดพเดทเดฟเดจเต เด เดคเดฟเดจเตเดฑเต เดธเตเดฅเดพเดจเด เดเดฃเตเดเตเดคเตเดคเดพเตป เดเดดเดฟเดฏเตเด.
เด เดเดตเดถเตเดฏเดเตเดเตพเดเตเดเดพเดฏเดฟ เดฎเดพเดทเต เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเดคเต เดเดฐเดเดญเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเต, เดจเดฟเดเตเดเตพ เดธเตเดตเดฏเด เดชเตเดฐเตเดเดเตเดฑเตเดฑเต เดเตเดเตเดเดฟเดเตเดเตเตผเดเตเดเตเดฃเตเดเดคเดฟเดฒเตเดฒ.
เดฎเดพเดทเดฟเดจเต เดเดฐเต เดฑเตบเดเตเด เดเตปเดตเดฏเตเตบเดฎเตเดจเตเดฑเต เดเดฃเตเดเต - เดเดฐเต เดชเตเตผเดฃเตเดฃ API เดเดณเตเดณ เดเดฐเต เดกเตเดจเดพเดฎเดฟเดเต เดฒเตเดฌเตเดฐเดฑเดฟเดฏเดพเดฏเดฟ เดธเดฎเดพเดนเดฐเดฟเดเตเด เดเดฐเต เดธเตเดฑเตเดฑเดพเดเตเดเต เด เดเดฟเดธเตเดฅเดพเดจเดฎเดพเดเตเดเดฟเดฏเตเดณเตเดณ VM.
เดจเดฟเดเตเดเตพ เดเตเดฏเตเดฏเตเดฃเตเดเดคเต เดชเตเดฐเตเดเดเตเดฑเตเดฑเต เดกเดฟเดชเตปเดกเตปเดธเดฟเดฏเดฟเดฒเตเดเตเดเต เดเดคเต เดเตเตผเดเตเดเตเดเดฏเตเด เดฐเดฃเตเดเต เดเตเดณเตเดเตพ เดเตเดฏเตเดฏเตเดเดฏเตเด เดเตเดฏเตเดฏเตเด.
เดญเดพเดท เดคเดจเตเดจเต เดเดฐเต เดเตพเดเตเดเตเตผเดคเตเดค เดญเดพเดทเดฏเดพเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเดพเดจเตเดณเตเดณ เดชเตเดฐเดตเตผเดคเตเดคเดจเดเตเดทเดฎเดค เดจเตฝเดเตเดจเตเดจเต.
เด
เดคเต เดธเดฎเดฏเด, เดญเดพเดทเดฏเตเด เดฎเตเดจเตเดจเดพเด เดเดเตเดทเดฟ เดฒเตเดฌเตเดฐเดฑเดฟเดเดณเตเดฎเดพเดฏเดฟ เดธเดเดฏเตเดเดฟเดชเตเดชเดฟเดเตเดเตเดณเตเดณ เดชเตเดฐเดเดเดจเดคเตเดคเต เดฌเดพเดงเดฟเดเตเดเดฟเดฒเตเดฒ.
เด
เดคเดฟเตฝ เดเดดเตเดคเดฟเดฏเดฟเดฐเดฟเดเตเดเตเดจเตเดจ เดตเดฟเดตเดฟเดง เดเดเตเดเดเตเดเตเดเตเดเดณเตเดเต เดฎเตเดดเตเดตเตป เดถเดเตเดคเดฟเดฏเตเด เดเดชเดฏเตเดเดฟเดเตเดเดพเตป เดเดดเดฟเดฏเตเดจเตเดจ เดเดฐเต เดเดเดฌเดกเดกเต เดญเดพเดทเดฏเดพเดฃเต เดจเดฎเตเดเตเดเต เดฒเดญเดฟเดเตเดเตเดจเตเดจเดคเต.
เดฎเดพเดทเต + เดเต.เดตเดฟ.เดเด
เดเดพเตป เดเตเดตเดฟเดเดฎเตเดฎเดฟเดจเดพเดฏเดฟ เดตเดฟเดตเตผเดคเตเดคเดเดจเตเดฑเต เดเดฐเต เดชเดคเดฟเดชเตเดชเต เดตเดฟเดเดธเดฟเดชเตเดชเดฟเดเตเดเดพเตป เดคเตเดเดเตเดเดฟ.
เดเดฐเตเดชเดเตเดทเต, N เดธเดฎเดฏเดคเตเดคเดฟเดจเต เดถเตเดทเด, เด เดตเดฟเดทเดฏเดคเตเดคเตเดเตเดเตเดฑเดฟเดเตเดเตเดณเตเดณ เดเดฐเต เดชเตเดธเตเดฑเตเดฑเต Habrรฉ-เดฏเดฟเตฝ เดฆเตเดถเตเดฏเดฎเดพเดเตเด.
เดซเดฒเดเตเดเตพ
เดชเตเดฐเดคเตเดฏเตเดเดฟเดเตเดเต เดซเดฒเดเตเดเดณเตเดจเตเดจเตเดฎเดฟเดฒเตเดฒ. เดเดคเต เดซเดฒเดเตเดเดณเตเดเต เดเดฐเต เดเดจเตเดฑเตผเดฎเตเดกเดฟเดฏเดฑเตเดฑเต เดชเตเดฐเดพเดคเดฟเดจเดฟเดงเตเดฏเดฎเดพเดฃเต.
2020เตฝ เดเดฒเตเดฒเดพเดตเตผเดเตเดเตเด เดเดถเดเดธเดเตพ เดจเตเดฐเตเดจเตเดจเต.
เด
เดตเดฒเดเดฌเด: www.habr.com