Scala インストール2017/10/31 |
オブジェクト指向言語と関数型言語の双方の特徴を統合し Java VM 上で動作する Scala のインストールです。
|
|
[1] | CentOS SCLo Software Collections からインストール可能です。 |
# SCLoからインストール [root@dlp ~]# yum --enablerepo=centos-sclo-rh -y install rh-scala210
|
[2] | Software Collections パッケージは /opt 配下にインストールされます。 環境変数を読み込んで利用するには以下のように実行します。 |
# 環境変数を読み込む [root@dlp ~]# scl enable rh-scala210 bash
[root@dlp ~]#
[root@dlp ~]# scala -version Scala code runner version 2.10.6 -- Copyright 2002-2013, LAMP/EPFL which scala /opt/rh/rh-scala210/root/usr/bin/scala |
[3] | ログイン時に自動的に有効にするには以下のように設定します。 |
[root@dlp ~]#
vi /etc/profile.d/rh-scala210.sh # 以下の内容で新規作成 #!/bin/bash source /opt/rh/rh-scala210/enable export X_SCLS="`scl enable rh-scala210 'echo $X_SCLS'`" |
[4] | Scala REPL (Read Eval Print Loop) と呼ばれる対話型シェルを起動して動作確認します。 |
[root@dlp ~]# scala Welcome to Scala version 2.10.6 (OpenJDK 64-Bit Server VM, Java 1.8.0_151). Type in expressions to have them evaluated. Type :help for more information. # 文字列を表示 scala> println("Hello Scala World") Hello Scala World # 定数に代入 scala> val msg:String = "Hello Scala World" msg: String = Hello Scala World scala> println(msg) Hello Scala World # 終了 scala> sys.exit |
[5] | テストプログラムで動作確認します。 |
[root@dlp ~]#
vi readfile.scala import java.io.File import java.io.FileReader import java.io.BufferedReader object readfile { def main(args: Array[String]) { val reader = new BufferedReader(new FileReader(new File("/etc/passwd"))) try { var line : String = null while ({ line = reader.readLine; line != null }) { println(line) } } finally { reader.close } } } # そのまま実行 [root@dlp ~]# scala readfile.scala root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin ..... ..... # コンパイルして実行 [root@dlp ~]# scalac readfile.scala [root@dlp ~]# total 16 -rw-------. 1 root root 1441 Dec 19 2016 anaconda-ks.cfg -rw-r--r--. 1 root root 574 Nov 1 19:44 readfile.class -rw-r--r--. 1 root root 1104 Nov 1 19:44 readfile$.class -rw-r--r--. 1 root root 387 Nov 1 19:42 readfile.scala[root@dlp ~]# scala readfile root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin ..... ..... |