argius note

プログラミング関連

スクリプトのように実行する

scalacして実行というのはけっこう手間がかかります。
REPLも起動してから逐一コードを評価していかなければなりません。
そこで、ファイルにプログラムを書いて保存したらそのまま実行できるようにします。


ただ練習するだけなら

$ scala test.scala

でも良いわけですが、あくまでスクリプトっぽく、たとえば/usr/local/binに置いたりする場合などに使えます。

  • 自身をscalaファイルとしてscalaコマンドに渡すスクリプト
#!/bin/sh
exec scala -deprecation ${0} $@
# exec scala -deprecation `cygpath -w ${0}` $@ # Cygwinの場合
!#

def add(a: Int, b: Int): Int = a + b
def getArgAsInt(i: Int): Int = args(i).toInt

val (n1, n2) = (getArgAsInt(0), getArgAsInt(1))
printf("N1 = %d, N2 = %d, N1 + N2 = %d%n", n1, n2, add(n1, n2))

val a = List(5, 4, 2, 12, 8)
println(a sortWith (_ > _))
println(a sortWith (_ < _))
$ chmod a+x test.scala ; ll *.scala
---x--x--x+ 1 argius None 327 4月  26 22:22 test.scala
$ time ./test.scala 3 2
N1 = 3, N2 = 2, N1 + N2 = 5
List(12, 8, 5, 4, 2)
List(2, 4, 5, 8, 12)

real    0m8.507s
user    0m0.568s
sys     0m2.237s
$