เจจเจตเฉเจ เจธเจพเจฒ 2020 เจฆเฉเจเจ เจธเจพเจฐเจฟเจเจ เจจเฉเฉฐ เจธเจผเฉเจญเจเจพเจฎเจจเจพเจตเจพเจเฅค
เจชเจนเจฟเจฒเฉ เจฆเฉ เจชเฉเจฐเจเจพเจธเจผเจจ เจฆเฉ เจฌเจพเจ
เจฆ
เจเจธ เจธเจพเจฒ เจฆเฉ เจฆเฉเจฐเจพเจจ, เจญเจพเจธเจผเจพ เจตเจฟเฉฑเจ เจฌเจนเฉเจค เจธเฉเจงเจพเจฐ เจเฉเจคเจพ เจเจฟเจ เจธเฉ, เจเจธเจฆเฉ เจฌเจนเฉเจค เจธเจพเจฐเฉ เจชเจนเจฟเจฒเฉเจเจ เจจเฉเฉฐ เจตเจฟเจเจพเจฐเจฟเจ เจเจฟเจ เจธเฉ เจ เจคเฉ เจตเจฟเจเจพเจธ เจฆเจพ เจตเฉเจเจเจฐ เจจเจฟเจฐเจงเจพเจฐเจค เจเฉเจคเจพ เจเจฟเจ เจธเฉเฅค
เจฎเฉเจจเฉเฉฐ เจเจน เจธเจญ เจเจฎเจฟเจเจจเจฟเจเฉ เจจเจพเจฒ เจธเจพเจเจเจพ เจเจฐเจเฉ เจเฉเจธเจผเฉ เจนเฉ เจฐเจนเฉ เจนเฉเฅค
เจฌเฉเจฆเจพเจ เจตเจพ
เจเจน เจชเฉเจฐเฉเจเฉเจเจ เจธเจฟเจฐเจซ เจเจคเจธเจผเจพเจน 'เจคเฉ เจตเจฟเจเจธเจค เจเฉเจคเจพ เจเจพ เจฐเจฟเจนเจพ เจนเฉ เจ เจคเฉ เจเจคเฉเจธเจผเฉเจฒ เจชเฉเจฐเฉเจเจฐเจพเจฎเจฟเฉฐเจ เจญเจพเจธเจผเจพเจตเจพเจ เจฆเฉ เจเฉเจคเจฐ เจตเจฟเฉฑเจ เจตเจฟเจธเจผเจต เจฆเฉ เจฆเจฌเจฆเจฌเฉ เจฆเจพ เจฆเจฟเจเจพเจตเจพ เจจเจนเฉเจ เจเจฐเจฆเจพ!
เจเจธ เจตเจฟเจเจพเจธ เจจเฉเฉฐ เจเฉฑเจ เจฎเจฟเจเจฐ เจตเจเฉเจ เจจเจนเฉเจ เจฎเฉฐเจจเจฟเจ เจเจพเจฃเจพ เจเจพเจนเฉเจฆเจพ เจนเฉ เจเจฟเจธ เจฒเจ เจเฉเจธเจผเจฟเจธเจผ เจเฉเจคเฉ เจเจพ เจธเจเจฆเฉ เจนเฉ; เจชเฉเจฐเฉเจเฉเจเจ เจเจฆเจฐเจธเจผ เจจเจนเฉเจ เจนเฉ, เจชเจฐ เจซเจฟเจฐ เจตเฉ เจเจน เจตเจฟเจเจพเจธ เจเจฐ เจฐเจฟเจนเจพ เจนเฉ.
เจจเจตเจพเจ เจเฉฐเจชเจพเจเจฒเจฐ
เจชเฉเจฐเฉเจเฉเจเจ เจฐเจฟเจชเฉเจเจผเจเจฐเฉ เจฆเฉ /mashc เจธเจผเจพเจเจพ เจตเจฟเฉฑเจ, เจคเฉเจธเฉเจ เจเฉฐเจชเจพเจเจฒเจฐ เจฆเจพ เจเฉฑเจ เจจเจตเจพเจ เจธเฉฐเจธเจเจฐเจฃ เจฆเฉเจ เจธเจเจฆเฉ เจนเฉ, เจเฉ Mash (เจญเจพเจธเจผเจพ เจฆเจพ เจชเจนเจฟเจฒเจพ เจธเฉฐเจธเจเจฐเจฃ) เจตเจฟเฉฑเจ เจฒเจฟเจเจฟเจ เจเจฟเจ เจนเฉเฅค
เจเฉฐเจชเจพเจเจฒเจฐ เจเฉเจฒ asm เจธเฉเจเฉ เจตเจฟเฉฑเจ เจเฉฑเจ เจเฉเจก เจเจจเจฐเฉเจเจฐ เจนเฉ (เจเฉฑเจ เจธเจเฉเจ-เจ
เจงเจพเจฐเจฟเจค VM เจฒเจ เจ
เจธเฉเจเจฌเจฒเจฐ เจฒเจ)เฅค
เจตเจฐเจคเจฎเจพเจจ เจตเจฟเฉฑเจ เจฎเฉเจ Java (JDK 1.8) เจฒเจ เจเจจเจฐเฉเจเจฐ เจฆเจพ เจเฉฑเจ เจธเฉฐเจธเจเจฐเจฃ เจตเจฟเจเจธเจค เจเจฐ เจฐเจฟเจนเจพ เจนเจพเจ.
เจเฉฐเจชเจพเจเจฒเจฐ เจฆเจพ เจจเจตเจพเจ เจธเฉฐเจธเจเจฐเจฃ เจญเจพเจธเจผเจพ เจฆเฉ เจชเจนเจฟเจฒเฉ เจธเฉฐเจธเจเจฐเจฃ เจฆเฉ เจเจพเจฐเจเจเฉเจธเจผเจฒเจคเจพ เจฆเจพ เจชเฉเจฐเฉ เจคเจฐเฉเจนเจพเจ เจธเจฎเจฐเจฅเจจ เจเจฐเจฆเจพ เจนเฉ เจ เจคเฉ เจเจธเจจเฉเฉฐ เจชเฉเจฐเจ เจเจฐเจฆเจพ เจนเฉเฅค
เจจเจตเจพเจ เจ.เจ.เจชเฉ
เจญเจพเจธเจผเจพ เจฆเฉ เจจเจตเฉเจ เจธเฉฐเจธเจเจฐเจฃ เจตเจฟเฉฑเจ, เจเจฒเจพเจธเจพเจ เจฆเฉ เจจเจพเจฒ เจเฉฐเจฎ เจจเฉเฉฐ เจ
เฉฐเจธเจผเจ เจคเฉเจฐ 'เจคเฉ เจกเจฟเจเจผเจพเจเจจ เจเฉเจคเจพ เจเจฟเจ เจนเฉเฅค
เจเจฒเจพเจธ เจตเจฟเจงเฉเจเจ เจจเฉเฉฐ เจเจฒเจพเจธ เจฌเจพเจกเฉ เจตเจฟเฉฑเจ เจ
เจคเฉ เจเจธเจฆเฉ เจฌเจพเจนเจฐ เจเฉเจธเจผเจฟเจค เจเฉเจคเจพ เจเจพ เจธเจเจฆเจพ เจนเฉเฅค
เจเจฒเจพเจธ เจตเจฟเฉฑเจ เจนเฉเจฃ เจเฉฑเจ เจธเจชเจธเจผเจ เจเฉฐเจธเจเจฐเจเจเจฐ เจนเฉ: 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
เจเจฎเจฌเฉเจกเจก เจญเจพเจธเจผเจพ
เจธเฉฐเจญเจพเจตเจค เจคเฉเจฐ 'เจคเฉ, เจฎเฉเจธเจผ เจฒเฉเจ เจฆเฉ เจธเจฎเจพเจจ, เจเจฎเจฌเฉเจกเจก เจชเฉเจฐเฉเจเจฐเจพเจฎเจฟเฉฐเจ เจญเจพเจธเจผเจพ เจฆเฉ เจฐเฉเจช เจตเจฟเฉฑเจ เจเจชเจฃเจพ เจธเจฅเจพเจจ เจฒเฉฑเจญ เจธเจเจฆเจพ เจนเฉเฅค
เจเจนเจจเจพเจ เจเจฆเฉเจธเจผเจพเจ เจฒเจ เจฎเฉเจธเจผ เจฆเฉ เจตเจฐเจคเฉเจ เจธเจผเฉเจฐเฉ เจเจฐเจจ เจฒเจ, เจคเฉเจนเจพเจจเฉเฉฐ เจเฉเจฆ เจชเฉเจฐเฉเจเฉเจเจ เจจเฉเฉฐ เจเจเฉฑเจ เจพ เจเจฐเจจ เจฆเฉ เจตเฉ เจฒเฉเฉ เจจเจนเฉเจ เจนเฉเฅค
เจฎเฉเจธเจผ เจตเจฟเฉฑเจ เจเฉฑเจ เจฐเจจเจเจพเจเจฎ เจตเจพเจคเจพเจตเจฐเจฃ เจนเฉ - เจเฉฑเจ เจธเจเฉเจ-เจ เจงเจพเจฐเจฟเจค VM เจเฉฑเจ เจชเฉเจฐเฉ API เจฆเฉ เจจเจพเจฒ เจเฉฑเจ เจกเจพเจเจจเจพเจฎเจฟเจ เจฒเจพเจเจฌเฉเจฐเฉเจฐเฉ เจฆเฉ เจฐเฉเจช เจตเจฟเฉฑเจ เจเฉฐเจชเจพเจเจฒ เจเฉเจคเจพ เจเจฟเจ เจนเฉเฅค
เจคเฉเจนเจพเจจเฉเฉฐ เจฌเฉฑเจธ เจเจธ เจจเฉเฉฐ เจชเฉเจฐเฉเจเฉเจเจ เจจเจฟเจฐเจญเจฐเจคเจพ เจตเจฟเฉฑเจ เจธเจผเจพเจฎเจฒ เจเจฐเจจ เจ เจคเฉ เจเฉเจ เจเจพเจฒเจพเจ เจเจฐเจจ เจฆเฉ เจฒเฉเฉ เจนเฉเฅค
เจญเจพเจธเจผเจพ เจเจชเจฃเฉ เจเจช เจตเจฟเฉฑเจ เจเฉฑเจ เจเจฎเจฌเฉเจกเจก เจญเจพเจธเจผเจพ เจตเจเฉเจ เจเฉฐเจฎ เจเจฐเจจ เจฒเจ เจเจพเจฐเจเจธเจผเฉเจฒเจคเจพ เจชเฉเจฐเจฆเจพเจจ เจเจฐเจฆเฉ เจนเฉเฅค
เจเจธเฉ เจธเจฎเฉเจ, เจญเจพเจธเจผเจพ เจ
เจคเฉ เจคเฉเจเฉ-เจงเจฟเจฐ เจฆเฉเจเจ เจฒเจพเจเจฌเฉเจฐเฉเจฐเฉเจเจ เจฆเฉ เจจเจพเจฒ เจชเฉเจฐเจฆเจฐเจธเจผเจจ เจจเฉเฉฐ เจชเฉเจฐเจญเจพเจตเจฟเจค เจจเจนเฉเจ เจเฉเจคเจพ เจเจพเจเจฆเจพ เจนเฉเฅค
เจธเจพเจจเฉเฉฐ เจเฉฑเจ เจเจฎเจฌเฉเจกเจก เจญเจพเจธเจผเจพ เจฎเจฟเจฒเจฆเฉ เจนเฉ เจเฉ เจเจธ เจตเจฟเฉฑเจ เจฒเจฟเจเฉ เจตเฉฑเจ-เจตเฉฑเจ เจซเจฐเฉเจฎเจตเจฐเจ เจฆเฉ เจชเฉเจฐเฉ เจธเจผเจเจคเฉ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐ เจธเจเจฆเฉ เจนเฉเฅค
เจฎเฉเจธเจผ + เจเฉเจตเฉเจเจฎ
เจฎเฉเจ JVM เจฒเจ เจ
เจจเฉเจตเจพเจฆเจ เจฆเจพ เจเฉฑเจ เจธเฉฐเจธเจเจฐเจฃ เจตเจฟเจเจธเจฟเจค เจเจฐเจจเจพ เจธเจผเฉเจฐเฉ เจเฉเจคเจพเฅค
เจธเจผเจพเจเจฆ, N เจธเจฎเฉเจ เจฆเฉ เจฌเจพเจ
เจฆ, เจเจธ เจตเจฟเจธเจผเฉ 'เจคเฉ เจเฉฑเจ เจชเฉเจธเจ Habrรฉ' เจคเฉ เจฆเจฟเจเจพเจ เจฆเฉเจตเฉเจเฉ.
เจจเจคเฉเจเฉ
เจเฉเจ เจเจพเจธ เจจเจคเฉเจเฉ เจจเจนเฉเจ เจนเจจเฅค เจเจน เจจเจคเฉเจเจฟเจเจ เจฆเฉ เจเฉฑเจ เจตเจฟเจเจเจพเจฐเจฒเฉ เจจเฉเจฎเจพเจเฉฐเจฆเจเฉ เจนเฉเฅค
2020 เจตเจฟเฉฑเจ เจธเจพเจฐเจฟเจเจ เจฒเจ เจธเจผเฉเจญเจเจพเจฎเจจเจพเจตเจพเจเฅค
เจธเจฐเฉเจค: www.habr.com