ๆญค้กต้ข้่ฟๅ ฑไบซๆฏ็ง่ฏญ่จ็ๅนถๆ็คบไพ๏ผๅฏน Java ๅ Scala ็ผ็จ่ฏญ่จ่ฟ่กไบๆฏ่พใ ๅฎ้็จไบไบ่งฃ Java ๅนถๅธๆไบ่งฃ Scala ็็จๅบๅ๏ผ็นๅซๆฏ้่ฟ Scala ็นๆงไธ Java ็นๆง็ๅฏนๆฏๆฅไบ่งฃใ
ๆฆ่ฟฐ
ๅจ่ฟๅ ฅ็คบไพไนๅ๏ผ็ฌฌไธ้จๅๆไพไบไปฅไธ้จๅ็็ธๅฏน็ฎ็ญ็ไป็ปๅๆป็ปใ ๅฎไป้ซๅฑๆฌกไธไป็ปไบ Java ๅ Scala ไน้ด็ๅผๅ๏ผ็ถๅไป็ปไบๆจๅจๆฏๅคฉ็ผๅไปฃ็ ๆถไผ้ๅฐ็ๅทฎๅผใ
้ซๅฑๆฌก็็ธไผผๆง
ๅจ้ซๅฑๆฌกไธ๏ผScala ไธ Java ๆไปฅไธ็ธไผผไนๅค๏ผ
- Scalaไปฃ็ ็ผ่ฏๆ_.class_ๆไปถ๏ผๆๅ ๆJARๆไปถ๏ผ่ฟ่กๅจJVMไธ
- ่ฟๆฏไธ็ง้ขๅๅฏน่ฑก็ผ็จ (OOP) ่ฏญ่จ
- ๅฎๆฏ้ๆ็ฑปๅ็
- ไธค็ง่ฏญ่จ้ฝๆฏๆ lambdas ๅ ้ซ้ถๅฝๆฐ
- ๅฎไปฌ้ฝๅฏไปฅไธ IntelliJ IDEA ๅ Microsoft VS Code ็ญ IDE ไธ่ตทไฝฟ็จ
- ๅฏไปฅไฝฟ็จ GradleใAnt ๅ Maven ็ญๆๅปบๅทฅๅ ทๆๅปบ้กน็ฎ
- ๅฎๅ ทๆ็จไบๆๅปบๆๅกๅจ็ซฏใ็ฝ็ปๅฏ้ๅๅบ็จ็จๅบ็ๅบ่ฒๅบๅๆกๆถ๏ผๅ ๆฌ Web ๆๅกๅจๅบ็จ็จๅบใๅพฎๆๅกใๆบๅจๅญฆไน ็ญ๏ผๅ่ง โAwesome Scalaโ ๅ่กจ๏ผ
- Java ๅ Scala ้ฝๅฏไปฅไฝฟ็จ Scala ๅบ๏ผ
- ไปไปฌๅฏไปฅไฝฟ็จ Akka actor ๅบ ๆฅๆๅปบๅบไบ actor ็ๅนถๅ็ณป็ป๏ผๅนถไฝฟ็จ Apache Spark ๆฅๆๅปบๆฐๆฎๅฏ้ๅๅบ็จ็จๅบ
- ไปไปฌๅฏไปฅไฝฟ็จ Play Framework ๅผๅๆๅกๅจ็ซฏๅบ็จ็จๅบ
- ๆจๅฏไปฅไฝฟ็จ GraalVM ๅฐๆจ็้กน็ฎ็ผ่ฏไธบๆฌๆบๅฏๆง่กๆไปถ
- Scala ๅฏไปฅๆ ็ผไฝฟ็จไธบ Java ๅผๅ็ๅคง้ๅบ
้ซๅฑๆฌก็ๅทฎๅผ
ๅๆ ทๅจ้ซๅฑๆฌกไธ๏ผJava ๅ Scala ไน้ด็ๅบๅซๆฏ๏ผ
- Scala ่ฏญๆณ็ฎๆดๆ่ฏป๏ผๆไปฌ็งฐไนไธบ_่กจ็ฐๅ_
- ่ฝ็ถๅฎๆฏ้ๆ็ฑปๅ็๏ผไฝ Scala ็ปๅธธๆ่งๅๆฏไธ้จๅจๆ่ฏญ่จ
- Scala ๆฏไธ็ง็บฏ OOP ่ฏญ่จ๏ผๅ ๆญคๆฏไธชๅฏน่ฑก้ฝๆฏ็ฑป็ไธไธชๅฎไพ๏ผ่ๅ่ฟ็ฎ็ฌฆไธๆ ท็็ฌฆๅท
+
ๅ+=
ๆฏ็ๆญฃ็ๆนๆณ๏ผ่ฟๆๅณ็ๆจๅฏไปฅๅๅปบ่ชๅทฑ็่ฟ็ฎ็ฌฆ - ้คไบๆฏ็บฏOOP่ฏญ่จ๏ผScala่ฟๆฏ็บฏFP่ฏญ่จ๏ผๅฎ้ ไธ๏ผๅฎ้ผๅฑ OOP ๅ FP ็่ๅ๏ผๅ ทๆ็จไบ้ป่พ็ๅฝๆฐๅ็จไบๆจกๅๅ็ๅฏน่ฑก
- Scala ๆฅๆไธๆดๅฅไธๅฏๅ้ๅ๏ผๅ
ๆฌ
List
ใVector
ๅไธๅฏๅ็Map
ๅSet
ๅฎ็ฐ - Scala ไธญ็ไธๅ้ฝๆฏไธไธช_่กจ่พพๅผ_๏ผๅ
if
่ฏญๅฅใfor
ๅพช็ฏใmatch
่กจ่พพๅผ๏ผ็่ณtry
/catch
่กจ่พพๅผ้ฝๆ่ฟๅๅผ - Scala ไน ๆฏไธๅพๅ็ผบ็ไฝฟ็จไธๅฏๅๆง๏ผ้ผๅฑๆจไฝฟ็จไธๅฏๅ๏ผ
final
๏ผๅ้ๅไธๅฏๅ้ๅ - ๆฏ็จ็ Scala ไปฃ็ ไธไฝฟ็จ
null
๏ผๅ ๆญคไธไผ้ญๅNullPointerException
- Scala ็ๆ็ณป็ปๅจ sbtใMill ็ญไธญ่ฟๆๅ ถไป ๆๅปบๅทฅๅ ท
- ้คไบๅจ JVM ไธ่ฟ่กไนๅค๏ผScala.js ้กน็ฎๅ ่ฎธๆจไฝฟ็จ Scala ไฝไธบ JavaScript ๆฟไปฃๅ
- Scala Native ้กน็ฎๆทปๅ ไบไฝ็บง็ปๆ๏ผ่ฎฉๆจๅฏไปฅ็ผๅโ็ณป็ปโ็บงไปฃ็ ๏ผไนๅฏไปฅ็ผ่ฏไธบๆฌๆบๅฏๆง่กๆไปถ
็ผ็จๅฑๆฌกๅทฎๅผ
ๆๅ๏ผ่ฟไบๆฏๆจๅจ็ผๅไปฃ็ ๆถๆฏๅคฉ้ฝไผ็ๅฐ็ไธไบๅทฎๅผ๏ผ
- Scala ็่ฏญๆณๆๅ ถไธ่ด
- ๅ้ๅๅๆฐ่ขซๅฎไนไธบ
val
๏ผไธๅฏๅ๏ผๅฆJavaไธญ็final
๏ผๆvar
๏ผๅฏๅ๏ผ - ็ฑปๅๆจๅฏผ ่ฎฉๆจ็ไปฃ็ ๆ่งๆฏๅจๆ็ฑปๅ็๏ผๅนถๆๅฉไบไฟๆๆจ็ไปฃ็ ็ฎๆด
- ้คไบ็ฎๅ็
for
ๅพช็ฏไนๅค๏ผScala ่ฟๅ ทๆๅผบๅคง็for
comprehensions๏ผๅฏไปฅๆ นๆฎๆจ็็ฎๆณไบง็็ปๆ - ๆจกๅผๅน้
ๅ
match
่กจ่พพๅผๅฐๆนๅไฝ ็ผๅไปฃ็ ็ๆนๅผ - ้ป่ฎคๆ ๅตไธ็ผๅไธๅฏๅไปฃ็ ไผๅฏผ่ด็ผๅ_่กจ่พพๅผ_่ไธๆฏ_่ฏญๅฅ_๏ผ้็ๆถ้ด็ๆจ็งป๏ผๆจไผๅโโ็ฐ็ผๅ่กจ่พพๅผๅฏไปฅ็ฎๅๆจ็ไปฃ็ ๏ผๅๆจ็ๆต่ฏ๏ผ
- ้กถๅฑๅฎไน ่ฎฉๆจๅฏไปฅๅฐๆนๆณใๅญๆฎตๅๅ ถไปๅฎไนๆพๅจไปปไฝๅฐๆน๏ผๅๆถไนๅธฆๆฅ็ฎๆดใๅฏๆ่กจ็ฐๅ็ไปฃ็
- ๆจๅฏไปฅ้่ฟๅฐๅคไธช traits โๆททๅโๅฐ็ฑปๅๅฏน่ฑกไธญๆฅๅๅปบ_ๆททๆญ_๏ผ็นๅพ็ฑปไผผไบ Java 8 ๅๆดๆฐ็ๆฌไธญ็ๆฅๅฃ๏ผ
- ้ป่ฎคๆ ๅตไธ็ฑปๆฏๅฐ้ญ็๏ผๆฏๆ Joshua Bloch ๅจ Effective Java ็ไน ๆฏ็จๆณ๏ผโDesign and document for inheritance or else forbid itโ
- Scala ็ ไธไธๆๆฝ่ฑก ๅ ๆฏ่ฏญๆจๅฏผ ๆไพไบไธ็ณปๅ็นๆง๏ผ
- ๆฉๅฑๆนๆณ ่ฎฉๆจๅๅฐ้ญ็ฑปๆทปๅ ๆฐๅ่ฝ
- [็ป_ๅฎไพ]givens ่ฎฉๆจๅฎไน็ผ่ฏๅจๅฏไปฅๅจ _using ็นๅๆ็ๆฏ่ฏญ๏ผไป่ไฝฟๆจ็ไปฃ็ ไธ้ฃไนๅ้ฟ๏ผๅฎ่ดจไธ่ฎฉ็ผ่ฏๅจไธบๆจ็ผๅไปฃ็
- ๅคๅ ็ญๅผ ๅ ่ฎธๆจๅจ็ผ่ฏๆถๅฐ็ธ็ญๆฏ่พ้ๅถไธบไป ้ฃไบๆๆไน็ๆฏ่พ
- Scala ๆฅๆๆๅ ่ฟ็็ฌฌไธๆนๅผๆบๅฝๆฐๅผ็ผ็จๅบ
- Scala ๆ ทไพ็ฑปๅฐฑๅ Java 14 ไธญ็่ฎฐๅฝ๏ผๅฎไปฌๅฏไปฅๅธฎๅฉๆจๅจ็ผๅ FP ไปฃ็ ๆถๅฏนๆฐๆฎ่ฟ่กๅปบๆจก๏ผๅนถๅ ็ฝฎๅฏนๆจกๅผๅน้ ๅๅ ้็ญๆฆๅฟต็ๆฏๆ
- ็ฑไบๅ็งฐๅๆฐใไธญ็ผ็ฌฆๅทใๅฏ้ๆฌๅทใๆฉๅฑๆนๆณๅ ้ซ้ถๅฝๆฐ ็ญๅ่ฝ๏ผๆจๅฏไปฅๅๅปบ่ชๅทฑ็โๆงๅถ็ปๆโๅ DSL
- Scala ๆไปถไธๅฟ ๆ นๆฎๅฎไปฌๅ ๅซ็็ฑปๆ trait ๆฅๅฝๅ
- ่ฎธๅคๅ ถไปๅฅฝไธ่ฅฟ๏ผไผด็็ฑปๅๅฏน่ฑกใๅฎใ่ๅ ๅ ไบค้ใๆฐๅญๅญ้ข้ใๅคๅๆฐๅ่กจใๅๆฐ็้ป่ฎคๅผใๅฝๅๅๆฐ็ญ
็จไพๅญๆฅ่ฟ่ก็นๆงๅฏนๆฏ
้ดไบ่ฏฅไป็ป๏ผไปฅไธ้จๅๆไพไบ Java ๅ Scala ็ผ็จ่ฏญ่จๅ่ฝ็ๅนถๆๆฏ่พใ
OOP ้ฃๆ ผ็็ฑปๅๆนๆณ
ๆฌ่ๆไพไบไธ OOP ้ฃๆ ผ็็ฑปๅๆนๆณ็ธๅ ณ็็นๆง็ๆฏ่พใ
ๆณจ้๏ผ
//
|
//
|
OOP ้ฃๆ ผ็ฑป๏ผไธปๆ้ ๅฝๆฐ๏ผ
Scalaไธ้ตๅพชJavaBeansๆ ๅ๏ผๅ ๆญคๆไปฌๅจ่ฟ้ๅฑ็คบ็Javaไปฃ็ ไธๅฎๅ้ข็Scalaไปฃ็ ็ญๆ๏ผ่ไธๆฏๆพ็คบไปฅJavaBeans้ฃๆ ผ็ผๅ ็Javaไปฃ็ ใ
class Person {
|
class Person (
|
่พ ๅฉๆ้ ๅฝๆฐ๏ผ
public class Person {
|
class Person (
|
็ฑป้ป่ฎคๆฏๅฐ้ญ็๏ผ
โPlan for inheritance or else forbid it.โ
final class Person
|
class Person
|
ไธบๆฉๅฑๅผๆพ็็ฑป๏ผ
class Person
|
open class Person
|
ๅ่กๆนๆณ๏ผ
public int add(int a, int b) {
|
def add(a: Int, b: Int): Int = a + b
|
ๅค่กๆนๆณ๏ผ
public void walkThenRun() {
|
def walkThenRun() =
|
ไธๅฏๅๅญๆฎต๏ผ
final int i = 1;
|
val i = 1
|
ๅฏๅๅญๆฎต๏ผ
int i = 1;
|
var i = 1
|
ๆฅๅฃใtrait ๅ็ปงๆฟ
ๆฌ่ๅฐJavaๆฅๅฃไธScala trait ่ฟ่กๆฏ่พ๏ผๅ ๆฌ็ฑปๅฆไฝๆฉๅฑๆฅๅฃๅ traitใ
ๆฅๅฃ/trait๏ผ
public interface Marker;
|
trait Marker
|
็ฎๅๆฅๅฃ๏ผ
public interface Adder {
|
trait Adder:
|
ๆๅฎไฝๆนๆณ็ๆฅๅฃ๏ผ
public interface Adder {
|
trait Adder:
|
็ปงๆฟ๏ผ
class Dog extends Animal implements HasLegs, HasTail
|
class Dog extends Animal, HasLegs, HasTail
|
ๆฉๅฑๅคไธชๆฅๅฃ
่ฟไบๆฅๅฃๅ็นๅพๅ ทๆๅ ทไฝ็ใๅทฒๅฎ็ฐ็ๆนๆณ๏ผ้ป่ฎคๆนๆณ๏ผ๏ผ
interface Adder {
|
trait Adder:
|
ๆททๆญ๏ผ
N/A |
class DavidBanner
|
ๆงๅถ็ปๆ
ๆฌ่ๆฏ่พๅจ Java ๅ Scala ไธญ็ๆงๅถ็ปๆใ
if
่ฏญๅฅ๏ผๅ่ก๏ผ
if (x == 1) { System.out.println(1); }
|
if x == 1 then println(x)
|
if
่ฏญๅฅ๏ผๅค่ก๏ผ
if (x == 1) {
|
if x == 1 then
|
if, else if, else:
if (x < 0) {
|
if x < 0 then
|
if
ไฝไธบๆนๆณไฝ๏ผ
public int min(int a, int b) {
|
def min(a: Int, b: Int): Int =
|
ไป if
่ฟๅๅผ๏ผ
ๅจ Java ไธญ่ฐ็จ_ไธๅ ่ฟ็ฎ็ฌฆ_๏ผ
int minVal = (a < b) ? a : b;
|
val minValue = if a < b then a else b
|
while
ๅพช็ฏ๏ผ
while (i < 3) {
|
while i < 3 do
|
for
ๅพช็ฏ๏ผๅ่ก๏ผ
for (int i: ints) {
|
//preferred
|
for
ๅพช็ฏ๏ผๅค่ก๏ผ
for (int i: ints) {
|
for
|
for
ๅพช็ฏ๏ผๅค็ๆๅจ๏ผ
for (int i: ints1) {
|
for
|
ๅธฆๅฎๅซ๏ผif
๏ผ่กจ่พพๅผ็็ๆๅจ๏ผ
List ints =
|
for
|
for
comprehension:
N/A |
val list =
|
switch/match:
String monthAsString = "";
|
val monthAsString = day match
|
switch/match, ๆฏไธชๆ ๅตไธๅคไธชๆกไปถ๏ผ
String numAsString = "";
|
val numAsString = i match
|
try/catch/finally:
try {
|
try
|
้ๅ็ฑป
ๆฌ่ๆฏ่พ Java ๅ Scala ้็้ๅ็ฑปใ
ไธๅฏๅ้ๅ็ฑป
ๅฆไฝๅๅปบไธๅฏๅ้ๅๅฎไพ็ไพๅญใ
Sequences:
List strings = List.of("a", "b", "c");
|
val strings = List("a", "b", "c")
|
Sets:
Set set = Set.of("a", "b", "c");
|
val set = Set("a", "b", "c")
|
Maps:
Map map = Map.of(
|
val map = Map(
|
ๅฏๅ้ๅ็ฑป
Scala ๅจๅ
ถ scala.collection.mutable ๅ
ไธญๆๅฏๅ้ๅ็ฑป๏ผไพๅฆ ArrayBuffer
ใMap
ๅ Set
ใ
ๅจ ๅฏผๅ
ฅๅฎไปฌ ๅฐๅฝๅไฝ็จๅไนๅ๏ผๅๅปบๅฎไปฌๅฐฑๅๅๅๆพ็คบ็ไธๅฏๅ List
ใVector
ใMap
ๅ Set
็คบไพไธๆ ทใ
Scala ่ฟๆไธไธช Array
็ฑป๏ผๆจๅฏไปฅๅฐๅ
ถ่งไธบ Java array
ๅๅง็ฑปๅ็ๅ
่ฃ
ๅจใ
ไธไธช Scala Array[A]
ๆ ๅฐๅฐไธไธช Java A[]
๏ผๆไปฅไฝ ๅฏไปฅ่ฎคไธบ่ฟไธชๆฏ Scala Array[String]
๏ผ
val a = Array("a", "b")
่ฟไธช่ฟฝๆบฏๅฐ Java ็ String[]
:
String[] a = {"a", "b"};
ไฝๆฏ๏ผScala Array
่ฟๅ
ทๆๆจๆๆๅจ Scala ้ๅไธญไฝฟ็จ็ๆๆๅฝๆฐๆนๆณ๏ผๅ
ๆฌ map
ๅ filter
๏ผ
val nums = Array(1, 2, 3, 4, 5)
val doubledNums = nums.map(_ * 2)
val ่ฟๆปคNums = nums.filter(_ > 2)
ๅ ไธบ Scala Array
็่กจ็คบๆนๅผไธ Java array
็ธๅ๏ผๆไปฅๆจๅฏไปฅ่ฝปๆพๅฐๅจ Scala ไปฃ็ ไธญไฝฟ็จ่ฟๅๆฐ็ป็ Java ๆนๆณใ
ๅฐฝ็ฎก่ฎจ่ฎบไบ
Array
๏ผไฝ่ฏท่ฎฐไฝ๏ผๅจ Scala ไธญ้ๅธธๆๅฏ่ฝๆด้ๅ็Array
ๆฟไปฃๅใ ๆฐ็ปๅฏนไบไธๅ ถไป่ฏญ่จ๏ผJavaใJavaScript๏ผ็ไบๆไฝๅพๆ็จ๏ผๅนถไธๅจ็ผๅ้่ฆไปๅบๅฑๅนณๅฐ่ทๅพๆๅคงๆง่ฝ็ไฝ็บงไปฃ็ ๆถไนๅพๆ็จใไฝๆป็ๆฅ่ฏด๏ผๅฝไฝ ้่ฆไฝฟ็จๅบๅๆถ๏ผScala ็ไน ๆฏ็จๆณๆฏๆดๅๆฌขๅVector
ๅList
่ฟๆ ท็ไธๅฏๅๅบๅ๏ผ็ถๅๅจไฝ ็็้่ฆๅฏๅๅบๅๆถไฝฟ็จArrayBuffer
ใ
ๆจ่ฟๅฏไปฅไฝฟ็จ Scala CollectionConverters
ๅฏน่ฑกๅจ Java ๅ Scala ้ๅ็ฑปไน้ด่ฟ่ก่ฝฌๆขใ
ๅจไธๅ็ๅ
ไธญๆไธคไธชๅฏน่ฑก๏ผไธไธช็จไบไป Java ่ฝฌๆขไธบ Scala๏ผๅฆไธไธช็จไบไป Scala ่ฝฌๆขไธบ Javaใ
ไธ่กจๆพ็คบไบๅฏ่ฝ็่ฝฌๆข๏ผ
Java | Scala |
---|---|
java.util.Collection | scala.collection.Iterable |
java.util.List | scala.collection.mutable.Buffer |
java.util.Set | scala.collection.mutable.Set |
java.util.Map | scala.collection.mutable.Map |
java.util.concurrent.ConcurrentMap | scala.collection.mutable.ConcurrentMap |
java.util.Dictionary | scala.collection.mutable.Map |
้ๅ็ฑป็ๆนๆณ
็ฑไบ่ฝๅคๅฐ Java ้ๅ่งไธบๆต๏ผJava ๅ Scala ็ฐๅจๅฏไปฅไฝฟ็จ่ฎธๅค็ธๅ็้็จๅฝๆฐๆนๆณ๏ผ
map
filter
forEach
/foreach
findFirst
/find
reduce
ๅฆๆๆจไน ๆฏๅจ Java ไธญๅฐ่ฟไบๆนๆณไธ lambda ่กจ่พพๅผไธ่ตทไฝฟ็จ๏ผๆจไผๅ็ฐๅจ Scala ็ ้ๅ็ฑป ไธไฝฟ็จ็ธๅ็ๆนๆณๅพๅฎนๆใ
Scala ไนๆ_ๆฐๅไธช_ๅ
ถไป ้ๅๆนๆณ๏ผๅ
ๆฌ head
ใtail
ใdrop
ใtake
ใdistinct
ใflatten
็ญ็ญใ
่ตทๅไฝ ๅฏ่ฝๆณ็ฅ้ไธบไปไนไผๆ่ฟไนๅคๆนๆณ๏ผไฝๆฏๅจไฝฟ็จ Scala ไนๅไฝ ไผๆ่ฏๅฐ_ๅ ไธบ_ๆ่ฟไบๆนๆณ๏ผไฝ ๅพๅฐ้่ฆๅ็ผๅ่ชๅฎไน็ for
ๅพช็ฏไบใ
๏ผ่ฟไนๆๅณ็ไฝ ไนๅพๅฐ้่ฆ_่ฏป_่ชๅฎไน็ for
ๅพช็ฏใ
ๅ ไธบๅผๅไบบๅๅพๅไบๅจ_่ฏป_ไปฃ็ ไธ่ฑ่ดน็ๆถ้ดๆฏ_็ผๅ_ไปฃ็ ็ๅๅ๏ผ่ฟๅพ้่ฆใ๏ผ
ๅ ็ป
Java ๅ ็ปๆฏ่ฟๆ ทๅๅปบ็๏ผ
Pair<String, Integer> pair =
new Pair<String, Integer>("Eleven", 11);
Triplet<String, Integer, Double> triplet =
Triplet.with("Eleven", 11, 11.0);
Quartet<String, Integer, Double,Person> triplet =
Quartet.with("Eleven", 11, 11.0, new Person("Eleven"));
ๅ ถไป Java ๅ ็ปๅ็งฐๆฏ QuintetใSextetใSeptetใOctetใEnneadใDecadeใ
Scala ไธญไปปไฝๅคงๅฐ็ๅ ็ป้ฝๆฏ้่ฟๅฐๅผๆพๅจๆฌๅทๅ ๆฅๅๅปบ็๏ผๅฆไธๆ็คบ๏ผ
val a = ("eleven")
val b = ("eleven", 11)
val c = ("eleven", 11, 11.0)
val d = ("eleven", 11, 11.0, Person("Eleven"))
ๆไธพ
ๆฌ่ๆฏ่พ Java ๅ Scala ไธญ็ๆไธพใ
ๅบๆฌๆไธพ๏ผ
enum Color {
|
enum Color:
|
ๅๆฐๅ็ๆไธพ๏ผ
enum Color {
|
enum Color(val rgb: Int):
|
็จๆทๅฎไน็ๆไธพๆๅ๏ผ
enum Planet {
|
enum Planet(
|
ๅผๅธธๅ้่ฏฏๅค็
ๆฌ่ไป็ป Java ๅ Scala ไธญ็ๅผๅธธๅค็ไน้ด็ๅทฎๅผใ
Java ไฝฟ็จๆฃๆฅๅผๅธธ
Java ไฝฟ็จๆฃๆฅ็ๅผๅธธ๏ผๅ ๆญคๅจ Java ไปฃ็ ไธญ๏ผๆจๅๆฅ็ผๅ่ฟ try
/catch
/finally
ๅ๏ผไปฅๅๆนๆณไธ็ throws
ๅญๅฅ๏ผ
public int makeInt(String s)
throws NumberFormatException {
// code here to convert a String to an int
}
Scala ไธไฝฟ็จๆฃๆฅๅผๅธธ
Scala ็ไน ๆฏ็จๆณๆฏ_ไธ_ไฝฟ็จ่ฟๆ ท็ๆฃๆฅๅผๅธธใ
ๅจๅค็ๅฏ่ฝๆๅบๅผๅธธ็ไปฃ็ ๆถ๏ผๆจๅฏไปฅไฝฟ็จ try
/catch
/finally
ๅไปๆๅบๅผๅธธ็ไปฃ็ ไธญๆ่ทๅผๅธธ๏ผไฝๆฏๅฆไฝไป้ฃ้ๅผๅง็ๆนๅผๆฏไธๅ็ใ
่งฃ้่ฟไธ็น็ๆๅฅฝๆนๆณๆฏ่ฏด Scala ไปฃ็ ๆฏ็ฑๅ ทๆ่ฟๅๅผ็_่กจ่พพๅผ_็ปๆ็ใ ๅ ถ็ปๆๆฏ๏ผๆ็ปไฝ ๅไปฃๅฐฑๅๅไธ็ณปๅไปฃๆฐ่กจ่พพๅผ๏ผ
val a = f(x)
val b = g(a,z)
val c = h(b,y)
่ฟๅพๅฅฝ๏ผๅฎๅชๆฏไปฃๆฐใ ๆจๅๅปบๆน็จๆฅ่งฃๅณๅฐ้ฎ้ข๏ผ็ถๅ็ปๅๆน็จๆฅ่งฃๅณๆดๅคง็้ฎ้ขใ
้ๅธธ้่ฆ็ๆฏโโๆญฃๅฆไฝ ๅจไปฃๆฐ่ฏพ็จไธญๆ่ฎฐๅพ็้ฃๆ ทโโไปฃๆฐ่กจ่พพๅผไธไผ็ญ่ทฏโโๅฎไปฌไธไผๆๅบไผ็ ดๅไธ็ณปๅๆน็จ็ๅผๅธธใ
ๅ ๆญค๏ผๅจ Scala ไธญ๏ผๆไปฌ็ๆนๆณไธไผๆๅบๅผๅธธใ
็ธๅ๏ผๅฎไปฌ่ฟๅๅ Option
่ฟๆ ท็็ฑปๅใ
ไพๅฆ๏ผ่ฟไธช makeInt
ๆนๆณๆ่ทไธไธชๅฏ่ฝ็ๅผๅธธๅนถ่ฟๅไธไธช Option
ๅผ๏ผ
def makeInt(s: String): Option[Int] =
try
Some(s.toInt)
catch
case e: NumberFormatException => None
Scala Option
็ฑปไผผไบ Java Optional
็ฑปใ
ๅฆๅพๆ็คบ๏ผๅฆๆ string ๅฐ int ็่ฝฌๆขๆๅ๏ผๅๅจ Some
ๅผไธญ่ฟๅ Int
๏ผๅฆๆๅคฑ่ดฅ๏ผๅ่ฟๅ None
ๅผใ
Some
ๅ None
ๆฏ Option
็ๅญ็ฑปๅ๏ผๅ ๆญค่ฏฅๆนๆณ่ขซๅฃฐๆไธบ่ฟๅ Option[Int]
็ฑปๅใ
ๅฝๆจๆไธไธช Option
ๅผๆถ๏ผไพๅฆ makeInt
่ฟๅ็ๅผ๏ผๆๅพๅคๆนๆณๅฏไปฅไฝฟ็จๅฎ๏ผๅ
ทไฝๅๅณไบๆจ็้่ฆใ
ๆญคไปฃ็ ๆพ็คบไบไธ็งๅฏ่ฝ็ๆนๆณ๏ผ
makeInt(aString) match
case Some(i) => println(s"Int i = $i")
case None => println(s"Could not convert $aString to an Int.")
Option
ๅจ Scala ไธญๅพๅธธ็จ๏ผๅฎๅ
็ฝฎๅจๆ ๅๅบ็่ฎธๅค็ฑปไธญใ
ๅ
ถไป็ฑปไผผ็็ฑป็้ๅ๏ผไพๅฆ Try/Success/Failure ๅ Either/Left/Right๏ผๆไพไบๆดๅคง็็ตๆดปๆงใ
ๆๅ ณๅจ Scala ไธญๅค็้่ฏฏๅๅผๅธธ็ๆดๅคไฟกๆฏ๏ผ่ฏทๅ้ ๅฝๆฐๅผ้่ฏฏๅค็ ้จๅใ
Scala ็ฌๆ็ๆฆๅฟต
ไปฅไธๅฐฑๆฏ Java ๅ Scala ่ฏญ่จ็ๆฏ่พใ
Scala ไธญ่ฟๆๅ ถไปไธไบๆฆๅฟต็ฎๅๅจ Java 11 ไธญๆฏๆฒกๆ็ใ ่ฟๅ ๆฌ๏ผ
- ไธ Scala ็ ไธไธๆๆฝ่ฑก ็ธๅ ณ็ไธๅ
- ๅ ไธช Scala ๆนๆณ็นๆง๏ผ
- ๅคๅๆฐๅ่กจ
- ้ป่ฎคๅๆฐๅผ
- ่ฐ็จๆนๆณๆถไฝฟ็จๅฝๅๅๆฐ
- ๆ ทไพ็ฑป๏ผๅฆ Java 14 ไธญ็โ่ฎฐๅฝโ๏ผใๆ ทไพๅฏน่ฑกไปฅๅไผด็็ฑปๅๅฏน่ฑก๏ผๅ่ง ้ขๅๅปบๆจก๏ผไธ็ซ
- ๅๅปบ่ชๅทฑ็ๆงๅถ็ปๆๅ DSL ็่ฝๅ
- ้กถ็บงๅฎไน
- ๆจกๅผๅน้
match
่กจ่พพๅผ็้ซ็บง็นๆง- ็ฑปๅ lambdas
- traitๅๆฐ
- ไธ้ๆ็ฑปๅๅซๅ
- ๅคๅ ็ธ็ญๆง
- ็ฑปๅ็ฑป
- ไธญ็ผๆนๆณ
- ๅฎๅๅ ็ผ็จ
Contributors to this page:
Contents
- ๅฏผ่จ
- Scala 3 ็นๆง
- ไธบไปไนๆฏ Scala 3 ๏ผ
- Scala ็ๅณ้
- Hello, World!
- The REPL
- ๅ้ๅๆฐๆฎ็ฑปๅ
- ๆงๅถ็ปๆ
- ้ขๅๅปบๆจก
- ๆนๆณ
- ๅคด็ญๅฝๆฐ
- ๅไพๅฏน่ฑก
- ้ๅ
- ไธไธๆๆฝ่ฑก
- ้กถๅฑๅฎไน
- ๆป็ป
- ็ฑปๅๅๆข
- ๅญ็ฌฆไธฒๆๅผ
- ๆงๅถ็ปๆ
- ้ขๅๅปบๆจก
- ๅทฅๅ ท
- OOP ้ขๅๅปบๆจก
- ๅฝๆฐๅผ้ขๅๅปบๆจก
- ๆนๆณ
- ๆนๆณ็นๆง
- main ๆนๆณ
- ๆป็ป
- ๅฝๆฐ
- ๅฟๅๅฝๆฐ
- ๅฝๆฐๅ้
- Eta ๆฉๅฑ
- ้ซ้ถๅฝๆฐ
- ่ชๅฎไน map ๅฝๆฐ
- ๅๅปบๅฏไปฅ่ฟๅๅฝๆฐ็ๆนๆณ
- ๆป็ป
- ๆๅ ๅๅฏผๅ ฅ
- Scala ้ๅ
- ้ๅ็ฑปๅ
- ้ๅๆนๆณ
- ๆป็ป
- ๅฝๆฐๅผ็ผ็จ
- ไปไนๆฏๅฝๆฐๅผ็ผ็จ๏ผ
- ไธๅฏๅๅผ
- ็บฏๅฝๆฐ
- ๅฝๆฐๆฏๅผ
- ๅฝๆฐๅผ้่ฏฏๅค็
- ๆป็ป
- ็ฑปๅๅ็ฑปๅ็ณป็ป
- ็ฑปๅๆจๆญ
- ๆณๅ
- ็ธไบค็ฑปๅ
- ่ๅ็ฑปๅ
- ไปฃๆฐๆฐๆฎ็ฑปๅ
- ๅๅ
- ไธ้ๆ็ฑปๅ
- ็ปๆๅ็ฑปๅ
- ไพ่ตๅฝๆฐ็ฑปๅ
- ๅ ถไป็ฑปๅ
- ไธไธๆๆฝ่ฑก
- ๆฉๅฑๆนๆณ
- Given ๅฎไพๅ Using ่ฏญๅฅ
- ไธไธๆ็ปๅฎ
- Given ๅฏผๅ ฅ
- ๅฎ็ฐ็ฑปๅ็ฑป
- ๅคๅ ็ธ็ญๆง
- ้ๅผ่ฝฌๆข
- ๆป็ป
- ๅนถๅ
- Scala ๅทฅๅ ท
- ไฝฟ็จ sbt ๆๅปบๅๆต่ฏ Scala ้กน็ฎ
- worksheet
- ไธ Java ไบคไบ
- ๅ Java ๅผๅ่ ไป็ปScala
- Scala for JavaScript Developers
- Scala for Python Developers
- ไธไธๆญฅๅปๅช