mirror of
https://github.com/aNNiMON/Own-Programming-Language-Tutorial.git
synced 2024-09-20 08:44:20 +03:00
64 lines
1.3 KiB
Scala
64 lines
1.3 KiB
Scala
use std, types
|
|
|
|
v = rand(10)
|
|
println match v {
|
|
case 0: "Zero"
|
|
case 1: "One"
|
|
case x if x <= 5: "Two..five"
|
|
case _: "Six..nine"
|
|
}
|
|
|
|
def match1(v) = match v {
|
|
case 1: "One"
|
|
case "Two": 2
|
|
case x if typeof(x) == NUMBER: "Number"
|
|
case x if typeof(x) == STRING: "String"
|
|
case _: "other"
|
|
}
|
|
|
|
println match1(1)
|
|
println match1(322)
|
|
println match1("test")
|
|
println match1("Two")
|
|
println match1([2])
|
|
|
|
|
|
println "\nRecursive factorial"
|
|
println factorial(6)
|
|
def factorial(n) = match n {
|
|
case 0: 1
|
|
case _: n * factorial(n - 1)
|
|
}
|
|
|
|
println "\nPattern matching on arrays"
|
|
println printArrayRecursive([1, 2, 3, 4, 5, 6, 7])
|
|
def printArrayRecursive(arr) = match arr {
|
|
case [head :: tail]: "[" + head + ", " + printArrayRecursive(tail) + "]"
|
|
case []: "[]"
|
|
case other: "[" + other + ", []]"
|
|
}
|
|
|
|
println "\nPattern matching on arrays by value"
|
|
def tupleMatch(x) = match x {
|
|
case (0, 0): "00"
|
|
case (1, 0): "10"
|
|
case (0, 1): "01"
|
|
case (1, 1): "11"
|
|
case (2, _): "2?"
|
|
case _: "unknown"
|
|
}
|
|
println tupleMatch([0, 1])
|
|
println tupleMatch([1, 1])
|
|
println tupleMatch([2, 1])
|
|
println tupleMatch([3, 9])
|
|
|
|
|
|
println "\nFizzBuzz with pattern matching"
|
|
for i = 1, i <= 100, i++ {
|
|
println match [i % 3 == 0, i % 5 == 0] {
|
|
case (true, false): "Fizz"
|
|
case (false, true): "Buzz"
|
|
case (true, true): "FizzBuzz"
|
|
case _: i
|
|
}
|
|
} |