1
0

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を対話的に実行する

Posted at

ScalaをRead Eval Print Loop(REPL)を使って対話形式で実行した。
$ sbt console
でScalaをREPLで実行できる。

scala> println("Hello, World!")
Hello, World!

scala> "Hello, World!"
res1: String = Hello, World!

文字列だけを入力すると型Stringが表示された。Scalaは静的な型を持つ。プログラム実行前に型があっているか調べられるということ。

scala> 0xff
res2: Int = 255

0xは16進数を示す。16進数が10進数で表示された。

scala> 1e308
res3: Double = 1.0E308

Doubleの範囲内の数

scala> 9223372036854775807L
res4: Long = 9223372036854775807

64bitの整数

scala> 9223372036854775808L
<console>:1: error: integer number too large
       9223372036854775808L

Long型の範囲を超えているのでエラーになった。

scala> 9223372036854775807
<console>:1: error: integer number too large
       9223372036854775807

Long型を示すLがないのでエラーになった。

scala> 922337203685477580.7
res5: Double = 9.2233720368547763E17

少数点がつくとDouble型の範囲内

scala> 1.00000000000000000001 == 1
res6: Boolean = true
scala> 1.000000000000001 == 1
res20: Boolean = false

Doubleなどの浮動小数点数は近似された値で表現されるためtrueになる。

scala> "\u3042"
res7: String = あ
scala> "\ud842\udf9f"
res8: String = 𠮟

文字コードを入力している。

+ - * / %などが使える。
dbl.asInstanceOf[Int]で型の変換ができる。

scala> 4.5/2
res25: Double = 2.25

scala> (res25).asInstanceOf[Int]
res26: Int = 2
scala> 2147483647 +1
res29: Int = -2147483648

scala> 9223372036854775807L + 1
res30: Long = -9223372036854775808

型の最大値を超えると最小値になった。調べたところ言語によって挙動は違うらしい。

#変数
Scalaには2種類の変数があり、valは一度変数に値を入れると変更できない。varは変更ができる。基本的にvalが使われる。また、varでもvalでも型を宣言しなくてもコンパイラが型を推論してくれる。pythonと似てる。

scala> var x = 3*3
x: Int = 9

scala> x = "Hello"
<console>:12: error: type mismatch;
 found   : String("Hello")
 required: Int
       x = "Hello"
           ^

変数の型を宣言することもできる。

scala> val x: Int = 4*4
x: Int = 16

練習問題
Q. ¥3,950,000を年利率2.3%の単利で8か月間借り入れた場合の利息はいくらか(円未満切り捨て)

scala> val x = 3950000 * 0.023 / 12 * 8 
x: Double = 60566.666666666664

scala> val y = (x).asInstanceOf[Int]
y: Int = 60566

Q. 定価¥1,980,000の商品を値引きして販売したところ、原価1.6%にあたる¥26,400の損失となった。割引額は定価の何パーセントであったか

scala> val x = 100*(1-((26400/0.016)-26400)/1980000)
x: Double = 18.000000000000004
1
0
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?