関数オブジェクト
object MyApp{
def multi(a: Int, b: Int) = a * b
val multFunc = (_: Int) * (_: Int)
def main(args: Array[String]): Unit = {
println(multFunc(3, 5))
}
}
関数のカリー化
object MyApp {
def main(args: Array[String]): Unit = {
// 関数のカリー化
val multFunc = (a: Int, b: Int) => a * b
val multFuncCurried = (a: Int) => ((b: Int) => a * b)
// println(multFunc(3, 5))
// println(multFuncCurried(3)(5))
val double = multFuncCurried(2)
val tripple = multFuncCurried(3)
println(double(5)) // 10
println(tripple(5)) // 15
}
}
関数の部分適用
object MyApp {
def msg(from: String, to: String, text: String) = s"($from -> $to): $text"
def main(args: Array[String]): Unit = {
val msgToKouda = msg(_: String, "Kouda", _:String)
println(msgToKouda("yamagata", "OK!"))
println(msgToKouda("yoshimoto", "Great"))
println(msgToKouda("eto", "good"))
}
}
タプル
object MyApp {
def swap(a: Int, b: Int) = (b, a)
def main(args: Array[String]): Unit = {
// val data = (12, "igarashi", 52.6)
// println(data._1)
// println(data._2)
// println(data._3)
val (x, y) = swap(32, 55)
print(x)
print(y)
}
}
List
object MyApp {
def main(args: Array[String]): Unit = {
// val scores = List(200, 300, 400)
val scores = 200 :: 300 :: 400 :: Nil
println(scores.length)
println(scores.isEmpty)
println(scores.tail)
println(scores.head)
println(scores(1))
}
}
set
object MyApp {
def main(args: Array[String]): Unit = {
//val answers = Set(5, 3, 4, 5)
//println(answers)
// println(answers.container(3))
//println(answers(3))
val set1 = Set(1, 3, 5, 8)
val set2 = Set(3, 5, 7, 9)
println(set1 & set2)
println(set1 | set2)
println(set1 &~ set2)
}
}
map
object MyApp {
def main(args: Array[String]): Unit = {
val sales = Map("yoshida" -> 200, "kimura" -> 500)
println(sales("yoshida"))
println(sales("kimura"))
println(sales.contains("murata"))
}
}
mutable
val scores = scala.collection.mutable.Map("ito" -> 55, "yamamoto" -> 65)
scores("ito") = 60
map, filter, foreach
object MyApp {
def main(args: Array[String]): Unit = {
val prices = List(52.3, 48.6, 32.8)
prices.map(_ * 1.08).filter(_ > 50).foreach(println)
}
}