Tue Sep 10 09:06:57 JST 2013
どれ Scala ってやつを入れてみるか。ブツは ports の lang/scala にある。 2013.05 くらいの ports ツリーで、2.10.1 だった。 ちなみに本家は http://www.scala-lang.org/ だ。
サクっと入った。けど、make install しただけじゃ何もわからんぞなもし。 ほぼノーヒントだな、こりゃ。
Tue Sep 10 09:20:28 JST 2013
ググったら Getting Started 見つけた (便利な世の中だ…)。
動かし方は、大きく3つ。
- scala コマンドでインタプリタが起動するので、そこに打ち込んで操作。
- エディタで .scala なソースを作り、scalac でコンパイル、scala classfile で実行。
- スクリプトに埋め込み、いきなり実行。
scala インタプリタは、こんな感じ。
% scala
Welcome to Scala version 2.10.1 (Java HotSpot(TM) Server VM, Java 1.6.0_03-p4).
Type in expressions to have them evaluated.
Type :help for more information.
scala> object HelloWorld {
| def main(args: Array[String]) {
| println("hello, world!")
| }
| }
defined module HelloWorld
scala> HelloWorld.main(null)
hello, world!
scala> :q
%
往年の打ち込み文化を思い出せて楽しい。 数行ならいいけど、実際的には、ちょっとムリ。かな。
コンパイル実行は、java みたいな感じだ、と思えばわかりやすい。
% cat HelloWorld.scala
object HelloWorld {
def main(args: Array[String]) {
println("hello, world!")
}
}
% scalac HelloWorld.scala
% ls -l Hello*
-rw-r--r-- 1 oresama wheel 599 Sep 10 09:32 HelloWorld$.class
-rw-r--r-- 1 oresama wheel 586 Sep 10 09:32 HelloWorld.class
-rw-r--r-- 1 oresama wheel 89 Sep 10 09:16 HelloWorld.scala
% scala HelloWorld
hello, world!
コンパイル時に -d で class ファイルを吐く場所を指定できるのも javac と似たような感じだ。
スクリプト埋め込みは、ちょっと特殊だ。
% cat HelloWorld.sh
#!/bin/sh
exec scala "$0" "$@"
!#
object HelloWorld extends App {
println("Hello, world!")
}
HelloWorld.main(args)
% ./HelloWorld.sh
Hello, world!
起動から実行までワンクッションある。裏でコンパイルしているのだろうね。
HOME | index | prev | next