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
[Rev: --not under control--]
[EOF]