μ΄λ² ν¬μ€ν μ μ€μΉΌλΌμ λν μ 리 μ λλ€.
var <μλ³μ>[: <νμ
>] = <ννμ>
val <μλ³μ>[: <νμ
>] = <ννμ>
val identification: String = "hello world"
λΆλ³μ νμ μ κ°λ μ μ₯ λ¨μ
var identification: String = "hello"
κ°μ μ μ₯νκ³ κ·Έ κ°μ κ°μ Έ μ¬μ μλλ‘ ν λΉ λκ±°λ μμ½λ λ©λͺ¨λ¦¬ 곡κ°μ λμνλ μ μΌν μλ³μλ₯Ό μλ―Έ
μ€μΉΌλΌμμλ κ΄λ‘μ λ³μλ³΄λ€ κ°μ μ νΈλλλ°, μ΄λ κ°μ μ¬μ©νλ©΄ μμ€ μ½λκ° μμ μ + μμΈ‘ κ°λ₯ μ΄κΈ° λλ¬Έ
val μ κ°μ ν λΉνλ©΄ λκΉμ§ κ°μ΄ λ³κ²½λμ§ μκΈ° λλ¬Έμ μ½λλ₯Ό μ½κ³ , λλ²κΉ νλ μΌμ΄ μ¬μ
λμ, λ©ν° μ€λ λ μ½λμμ μ κ·Ό κ°λ₯ν νκ²½μμ varλ³΄λ€ λ μμ μ μ΄κ³ μλ¬κ° λ°μν νλ₯ μ΄ μ μ
-
νλμ λ¬Έμ λ€μμλ μ무κ²λ μκ±°λ, νλ μ΄μμ λ¬Έμ λλ μ«μκ° λ°λΌμ΄
val d = 10 val d1 = 10 val d1d = 10 val d1d1 = 10
-
1λ² λ€μλ μΈλμ€μ½μ΄(_)λ₯Ό λ§λΆμΌ μ μκ³ , κ·Έ λ€μμ νλ μ΄μμ λ¬Έμμ μ«μ λλ μ°μ° κΈ°νΈκ° λ€λ°λ₯Έλ€.
val d1d1_+ = 10 val d1d1_a = 10 val d1d1_1 = 10 val d1d1__1 = 10
-
νλ λλ κ·Έ μ΄μμ μ°μ°μ κΈ°νΈ.
val + = 10 val ++ = 10
-
λν λλ κ·Έ μ΄μμ λ¬Έμλ₯Ό ν μμ μμΈμ©λΆνΈ(backquote)λ‘ λλ¬ μΌλ€.
var `s` = 10 `s` = 20 var `s.d` = 10 `s.d` = 20
val test = "hello \n world"
-> hello
world
-
Stringμ λ³μ λ£μ κ²½μ°
val test2 = s"$test"
Scalaμ νμ ꡬ쑰 κ³μΈ΅μ λ€μκ³Ό κ°λ€
λͺ¨λ νμ μ 루νΈ
λͺ¨λ κ° νμ μ 루νΈ
AnyValμ νμ₯ν νμ μ λ°μ΄ν°λ₯Ό νννλλ° μ¬μ©λλ ν΅μ¬ κ°λ€μ΄κΈ° λλ¬Έμ κ° νμ (value type)λΌ νλ€.
λ€λ₯Έ νμ λ€κ³Ό λ§μ°¬κ°μ§λ‘ μ κ·Όλμλ§, κ°μ²΄λ‘ ν λ©λͺ¨λ¦¬μ ν λΉλκ±°λ JVM κΈ°λ³Έκ°μΌλ‘ μ€νμ μ§μμ μΌλ‘ ν λΉλ¨
λͺ¨λ μ°Έμ‘°(κ°μ΄ μλ) νμ μ 루νΈ
AnyVal μ΄μΈμ λͺ¨λ νμ λ€μ΄ AnyRefλ₯Ό 루νΈλ‘ κ°μ§λ€.
μ€μ§ κ°μ²΄λ‘ ν λ©λͺ¨λ¦¬μλ§ ν λΉλλ€.
'Ref'λΌλ μ©μ΄λ λ©λͺ¨λ¦¬ μ°Έμ‘°λ₯Ό ν΅ν΄ μ κ·Όλλ μ°Έμ‘°(reference) νμ μμ μλ―Ένλ€.
λͺ¨λ νμ μ νμ ν΄λμ€
λͺ¨λ νμ μ μλΈ νμ - νλ‘κ·Έλ¨ νλ¦μ μ¬κ°νκ² μν₯μ μ€ μ μλ μ°μ°μμ νΈνμ± μλ λ°νκ°μ μ 곡νκΈ° μν΄ μ‘΄μ¬ν¨.
ex) return ν€μλλ λ°ν νμ μ NothingμΌλ‘ κ°μ§κ³ μμ΄ μ΄κΈ°ν λμ€ μ¬μ©ν μ μλ€. λν κ·Έ κ°( μλ₯Όλ€μ΄ ν¨μμ κ°)μ μν₯μ μ£Όμ§ μλλ€.
Nothingμ νμ μΌλ‘λ§ μ¬μ©
null κ°μ μλ―Ένλ λͺ¨λ AnyRef νμ μ νμ ν΄λμ€
μ΅νμμ μ‘΄μ¬ null Typeμ μ 곡νκΈ° μν΄ μ‘΄μ¬
Stringνμ κ³Ό νΈνλκΈ° λλ¬Έμ nullμ String νμ μΌλ‘ μ μΈλ λ³μμ ν λΉ ν μ μμ
μ΄λ μ€μΉΌλΌ κ΅¬λ¬Έμ΄ μμ½λ ν€μλ λ³΄λ€ μ€μ νμ κ³Ό μΈμ€ν΄μ€λ₯Ό μ¬μ©νλ κ²μ λ μ’μνλ€λ μ¬μ€μ 보μ¬μ£Όλ μκ°λλ€κ³ ν¨
κ°μ΄ μμμ λνλ
val na = ()
type -> Unit
μ λμ½λ λ¬Έμ
μ΄ νμ μ λ€λ₯Έ μ«μμ μλ°©ν₯ μ νμ΄ κ°λ₯ν¨
true or false
|
, &
VS ||
, &&
μ μμ κ²½μ°λ κ²°κ³Ό κ°μ λ°ννκΈ° μ μ μ°μ°μ μ°κ΄λ λͺ¨λ μΈμλ₯Ό κ²μ¬νλ€.
νμλ μμ°¨μ μΌλ‘ κ²μ¬νλ©΄μ μμ°¨μ μΌλ‘ κ²μ¬νλ©΄μ μΆ©λΆνλ€λ©΄ λ€μ μλ μΈμλ€μ νκ°νμ§ μλλ€.
λ¬Έμμ΄
μ«μν νμ
(5.0).toByte, 47.toFloat
- νλμ κ°μ νΈνλλ κ°μΌλ‘ λ°κΏμ£Όλ μ ν ν¨μ
λ μ΄μμ κ°μ κ°μ§λ μμκ° μλ 컨ν μ΄λλ‘, ννμ ν¬ν¨λ κ°μ μλ‘ λ€λ₯Έ νμ μ κ°μ§ μ μλ€.
λ Όλ¦¬μ μΌλ‘ κ°μ λΆλ₯ν νμκ° μκ³ κ·Έ κ°λ€μ νλμ μμ§λ λ¨μλ‘ νννλλ° μ μ©ν¨
κ·Έλ¬λ 리μ€νΈμ λ°°μ΄κ³Ό λ¬λ¦¬ ννμ μμλ€μ λ°λ³΅ν μ μμ
ννμ νλμ΄μμ κ°μ λ΄κΈ°μν 컨ν μ΄λ μΌ λΏμ΄λ€.
val info = (5, "Korben", true)
Type -> (Int, String, Boolean)
info._2 -> Korben
----------------------------------------------------------------
val infos = "red" -> "0xff0000"
Type -> (String, String)
val amount = {
val x = 5 * 20
x + 10
}
amount = 110
if (<λΆμΈμ>) <ννμ>
if ( 47 % 3 ) println("Not a multiple of 3")
if ꡬ문μ ννμμΌλ‘ μ¬μ©ν κ²½μ°
val result = if (false) "what does this return?"
Type -> Unit
λ€μκ³Ό κ°μ΄ Unitμ λ°ννλ€.
μμμ resultκ° νμ μ΄ μ§μ λμ§ μμκΈ° λλ¬Έμ μ»΄νμΌλ¬λ κ°μ₯ μ ν©ν νμ μ μΆλ‘ νλ€.
μ ifλ μΆλ‘ ν μ Unitμ΄λ StringμΌλ‘ λ°ν λ μ μκΈ° λλ¬Έμ μ΄ λμ λ£¨νΈ ν΄λμ€μΈ Anyλ₯Ό μ ννλ€.
if (<λΆμΈμ>) <ννμ>
else <ννμ>
----------------------------------------------
if (x > y) x else y
μ μμ±λ ꡬ문μ 보면 xyλ‘ if elseλ¬Έμ μ 체λ₯Ό μ΄λ£¨κ³ μλ€.
μ€μΉΌλΌλ μΌνμ°μ°μλ₯Ό μ 곡νμ§ μλλ°, μ μ½λλ₯Ό 보면 if else λΈλ‘μ΄ νμ€μ κ°κ²°νκ² λ§μ λ¨μ΄μ§κΈ° λλ¬Έμ μΌν ννμμ΄ μ€μ λ‘ νμνμ§ μλλ€κ³ νλ€. ( λ³λ‘ μλΏμ§λ μλλ€. )
if..else ννμμ΄ ννμ λΈλ‘μμ΄ μ¬μ©νλκ²μ΄ μ’λ€κ³ νλ€.
κ·Έλ¬λ νμ€μ λ§μ λ¨μ΄μ§μ§ μλλ€λ©΄ λΈλ‘ μ¬μ©μ κ³ λ €ν΄μΌνλ€.
λ§€μΉ ννμμ Java μμ Swtich λ¬Έκ³Ό λμΌνλ€
case λ³μ λͺ λͺ κ·μΉμ λ³μλͺ μ μλ¬Έμλ‘ μμν΄μΌ νλ€λ κ²μ΄λ€.
val max = x > y match {
case true => x
case false => y
}
---------------------------------------------------------------------------
val max = x > y match {
case true => {
println(s"$x κ° λ ν½λλ€")
x
}
case false => {
println(s"$y κ° λ ν½λλ€")
y
}
case other => {
println("λλ¨Έμ§ κ²½μ°")
}
}val max = x > y match {
case true => {
println(s"$x κ° λ ν½λλ€")
x
}
case false => {
println(s"$y κ° λ ν½λλ€")
y
}
case other => {
println("λλ¨Έμ§ κ²½μ°")
}
}
----------------------------------------------------------------------------
val kind = day match {
case "MON"|"TUE"|.... =>
case "SAT"|"SUN" =>
}
----------------------------------------------------------------------------
val kind = day match {
case "MON"|"TUE"|.... => {
...
}
case "SAT"|"SUN" => {
....
}
}
case <μλ³μ> => <νλ μ΄μμ ννμ>
--------------------------------------------------------------------------
val text = if(..) {
...
case x => 20
case y => "10"
}
κ° λ°μΈλ©μ λ³μ λ°μΈλ©μΌλ‘ μλ €μ Έ μλλ° μ΄λ₯Ό μ΄μ©νλ©΄ λ§€μΉ ννμμ μ λ ₯ ν¨ν΄(x)μ λ‘컬 κ°μ λ°μΈλ© λμ΄ case λΈλ‘μ λ³Έλ¬Έμμ μ¬μ©ν μ μλ€.
val x = 10
val status = x match {
case 9 => 200
case 10 => {
println(s"yes $x")
-1
}
}
------------------------------------------------------------------
status -> -1
yes 10 κ° μΆλ ₯λ¨
val _ = 10
μμΌλ μΉ΄λλ _ λ‘ νννλλ° μ΄λ μν, μ°μ μμμμ μ λ νλ€κ³ νλ€.
val max = x > y match {
case true => {
println(s"$x κ° λ ν½λλ€")
x
}
case false => {
println(s"$y κ° λ ν½λλ€")
y
}
case _ => {
println("λλ¨Έμ§ κ²½μ°")
}
}
ν¨ν΄ κ°λλ κ° λ°μΈλ© ν¨ν΄μ if ννμμ μΆκ° νμ¬ match ννμμ μ‘°κ±΄λΆ λ‘μ§μ μμ΄ μΈμ μκ² νλ€.
val status = x match {
case 9 if x != null => 200
case 10 => {
println(s"yes $x")
-1
}
}
------------------------------------------------------------------
status -> -1
yes 10 κ° μΆλ ₯λ¨
val result = y match {
case x: String => s"'x'"
case x: Double => ....
case x: Float => ....
case x: Long => ....
case x: Int => ....
}
μ μ½λμμ 보면 caseμ λ°λΌ Typeμ΄ λ€λ₯Έλ° resultλ μ΄λ₯Ό λ€ λ°μμ μλ€.
μ΄λ μ€μΉΌλΌκ° λ€νμ μΈ νμ μ μ§μνλ€λ κ²μ 보μ¬μ€λ€
for (x <- 1 to 7) println("hello scala")
μ λ°λ³΅λ¬Έμ ννμμ΄ νΈμΆλμ§λ§ λ°νκ°μλ μ κ·Όν μ μλ€.
μ΄λ yieldλ₯Ό ν΅ν΄ ν΄κ²°ν μ μλλ°
for (x <- 1 to 7) yield println("hello scala")
---------------------------------------
Vector((), (), (), (), (), (), ())
for (x <- 1 to 7 if x < 5) yield x
-------------------------------------------------------
Vector(1, 2, 3, 4)
for { x <- 1 to 2
y <- 1 to 3 }
{ println(s"$x, $y") }
----------------------------------------------------------
1, 1
1, 2
1, 3
2, 1
2, 2
2, 3
for (x <- 1 to 7 pow << i) yield pow
-------------------------------------------------------
Vector(1, 2, 4, 8, 16....)
while (<λΆμΈμ>) ννμ
----------------------
do ννμ while (<λΆμΈμ>)
while, do/whileμ μ°¨μ΄μ μ λ€λ₯Έ μΈμ΄μμμ λ§μ°¬κ°μ§λ‘ λ¨Όμ νλ²μ€ννλ μνλμ μ°¨μ΄μ΄λ€.