2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Scala初心者の基本まとめ

Last updated at Posted at 2016-10-07

Scala

変数

var variableVal = 1
var intVar: Int = 1 //型指定変数

定数

val constVal = 1
val intVal: Int = 1 //型指定定数

コレクション

代表的な型

  • Seq
  • Set
  • Map

Seq

順番を保持する
val seq = Seq(1, 2, 3)

Seqの1種であるList

val list = List(1, 2, 3)
val list = 1 :: 2 :: 3 ::Nil //"::"で結合
val list2 = list :+ 4 //末尾に追加
val list3 = list ++ list2 //listの結合

Listの操作

val list = List(1, 2, 3, 4, 5)
list.head //先頭要素を返す
list.tail //先頭要素を除いた残りの要素を返す
list.isEmpty //空かどうか
list.contains(1) //1を含むか
list.reverse //逆転
list.distinct //ユニークな要素を抽出
list.groupBy(x => x % 2) =>Map((1, List(1, 3, 5))(0, List(2, 4))) //偶数と奇数にわける
list.sum //リストの合計
list.reduceLeft((x, y) => x + y) //左から順に加算
list.map(_ * 2) //リストを2倍したリストを作成(ワイルドカード使用可能)
list.mkString(",") //リストの中身を","で区切った文字列を作成
list.count(_ < 3) //3より小さいものをカウント
list.sortWith((s, t) => s < t) //小さい順にソート

Set

重複を許さない
val numbers = Set(1, 2, 3)

Map

キーと値がセット

val map = Map(1 -> "red", 2 -> "blue", 3 -> "yellow")
val red = map(1) =>red  

条件分岐

if文

if (条件) {
  処理1
} else if (条件) {
  処理2
} else {
  処理3
}

//式にすることもできる
val result = if (条件) {
  処理1
} else if (条件) {
  処理2
} else {
  処理3
}

case文

javaなどと違い、breakを書かなくてもcaseに入ればストップする

変数 match {
  case 条件 =>
    処理1
  case _ =>
    処理2
}

//式にすることもできる
val result = 変数 match {
  case 条件 =>
    処理1
  case _ =>
    処理2
}

ループ処理

for文

10回繰り返す

for (i <- 0 to 10(リスト)){
  処理
}

//ネストしたfor文(九九の結果を表示)
for (i <- 1 to 9; j <- 1 to 9){
  println(i * j)
}

//for文に条件を指定(偶数の時のみ表示)
for (i <- 1 to 9; j <- 1 to 9 if i % 2 == 0 || j % 2 == 0){
  println(i * j)
}

//for文でlistを返す
val list = for (i <- 1 to 9; j <- 1 to 9){
  yield i * j //yieldを使用することで値を返すことができる
}

while文

10回繰り返す

var i = 0
while(i < 10){
  処理
}

foreach文

val list = List(1, 2, 3, 4)
list.foreach{ e =>
  処理
}

メソッド定義

戻り値の型は省略可能(場合によっては"{}"と"()"も)

def メソッド名(引数) : 戻り値の型 = {
  処理
}

//省略例
def sum(i, i2) = i + i2

クラス定義

・クラスの後ろがコンストラクタ引数
・getter、setterは自動的に定義される(引数がvalで定義されていた場合はgetterのみ、privateならどちらも作成されない)

class Car(val carName){
  def displayName = carName
}

val car = new Car("car")
println(car.displayName)

Option

Option型で定義した変数にnullが入った場合、Noneを返し、それ以外はSomeを返す
Nullが入っていてもNullPointerExceptionで落ちない

val none = null
val optNone: Option[String] = Option(none)

optNone match{
  case Some(h) => h
  case None => 0
}

タプル

複数の値をまとまりとして表す

def sample(a: Int, b: Int) = {
  val sum = a + b
  val sub = a - b
  (sum, sub)
}

val tuple = sample(10, 20)
println(tuple._1) =>30
println(tuple._2) =>-10
2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?