added lesson 4
This commit is contained in:
parent
966767f58c
commit
a608a602ad
13
src/Lesson4/Lists.sc
Normal file
13
src/Lesson4/Lists.sc
Normal file
@ -0,0 +1,13 @@
|
||||
def insert(x: Int, xs: List[Int]): List[Int] = {
|
||||
if (xs.isEmpty) x::Nil
|
||||
else if (x < xs.head) x::xs
|
||||
else xs.head::insert(x, xs.tail)
|
||||
}
|
||||
|
||||
def isort(xs: List[Int]): List[Int] = {
|
||||
if (xs.isEmpty) Nil
|
||||
else insert(xs.head, isort(xs.tail))
|
||||
}
|
||||
|
||||
|
||||
isort(7::3::9::2::Nil)
|
35
src/Lesson4/PatternMatching.sc
Normal file
35
src/Lesson4/PatternMatching.sc
Normal file
@ -0,0 +1,35 @@
|
||||
def patFoo(value: Any): Boolean = {
|
||||
value match {
|
||||
case a: Int => a % 4 == 0
|
||||
case c: Char => c.isUpper
|
||||
case b: Boolean => true
|
||||
case _ => false
|
||||
}
|
||||
}
|
||||
|
||||
abstract class Expr
|
||||
case class Number(n: Int) extends Expr
|
||||
case class Sum(e1: Expr, e2: Expr) extends Expr
|
||||
|
||||
def eval(e: Expr): Int = e match {
|
||||
case Number(n) => n
|
||||
case Sum(e1, e2) => eval(e1) + eval(e2)
|
||||
}
|
||||
|
||||
def show(e: Expr): String = e match {
|
||||
case Number(n) => n.toString
|
||||
case Sum(e1, e2) => "(" + show(e1) + " + " + show(e2) + ")"
|
||||
}
|
||||
|
||||
patFoo(23)
|
||||
patFoo(24)
|
||||
patFoo('a')
|
||||
patFoo('A')
|
||||
patFoo(false)
|
||||
patFoo(true)
|
||||
patFoo("Hello")
|
||||
patFoo(null)
|
||||
|
||||
val e: Expr = Sum(Number(3), Sum(Number(4), Number(5)))
|
||||
eval(e)
|
||||
show(e)
|
4
src/Lesson4/Types.sc
Normal file
4
src/Lesson4/Types.sc
Normal file
@ -0,0 +1,4 @@
|
||||
val a: String = "Hell" + "o" * 50
|
||||
def b(s: String): String = "Hell" + s
|
||||
|
||||
a == b("o" * 50)
|
Loading…
x
Reference in New Issue
Block a user