ScalaとJavaってまぁまぁ見た目は似てて、同じ予約語も多いので、Javaの予約語を、Scalaの視点からみた場合に分類して簡単に解説してみました。分類の方法は独自だし、けっこう雑です。
Scala始めようと思ってるけど、Javaのあの予約語は、Scalaだと同じやつあるの?もしないなら、Scalaの予約語の、どれを使えばいいの?
っていうJavaプログラマ向けです。Javaプログラマにこそ、Scalaが普及して欲しいので。
完全に説明するのもめんどくさかったので、説明もなんか雑ですが・・・
同時に、以前scalaの予約語について書いたものがあるので、こっちも見るとよいかも。*1
だいだいJavaと同じ機能のモノ
特に説明の必要がないほど、ほぼJavaと同じ使い方するものはなにも書いてません。
catch
class
もちろんclassの定義に使うのは同じです。
が、Javaの場合
Class clazz = String.class;
という使い方をしますが、scalaで同じ事をする場合は、
val clazz = classOf[String]
というように、classOfという、型引数を一つだけとるメソッドを使います
do
extends
else
finally
while
return
省略できるから、あまり使わない。そもそも使わないで書くスタイルが推奨されると思われる。returnを書くと、メソッドの戻り値の型を省略できなくなる
throw
try
new
if
super
Javaと同じ予約語は存在するが、結構使い方違う、もしくは他の使い方が存在するもの
abstract
メソッドにはつけない(実装を持っていなければ、自動的にabstractなメソッドになるから)
classにつけるだけ
final
変数が再代入不可能ということを示す場合には、使用しない(その場合は、valという予約語つかう)
classが継承できないことを表したり、メソッドがオーバーライドできないことを示すことに使用する点はJavaと同じ
private
ちょっとJavaより機能豊富だったりする
protected
ちょっとJavaより機能豊富だったりする。
あと、Javaのprotectedって、同じpackage内からは参照できるけど、scalaの場合は参照できないっていう、細かい違いがある。
import
javaにない機能いっぱいある。
同じようなものが、アノテーションや、メソッドとしてある
throws
アノテーション
http://www.scala-lang.org/api/current/scala/throws.html
scala自体には、チェック例外っていう概念がないので普通は使わない。
javaからscalaを呼び出すことを想定する場合につける。
break
scala.util.controlのしたに、一応あるけど、結局内部で例外投げてるだけだし、あまり使わないほうがいいと思う。ifやmatchが値を返したりするので、ある程度慣れれば、breakを使用しないで書けるようになる。
http://d.hatena.ne.jp/kmizushima/20091109/1257747528
http://www.scala-lang.org/api/current/scala/util/control/Breaks.html
instanceof
予約語ではなく、isInstanceOfっていうメソッドがある
synchronized
AnyRefのメソッド
http://www.scala-lang.org/api/current/scala/AnyRef.html
assert
Predefにメソッドとして同じ名前では定義されてるけど・・・
scalaには存在しないもの
const
そういえば、予約語でしたね・・・
goto
そういえば、こいつも予約語でしたね・・・
switch
switch文に似てるけど、すごく機能豊富なmatch式というのがあるので、それを使いましょう。
public
デフォルトで何もつけないと、スコープがpublicになるので、publicという予約語は存在しせん。
static
staticっていう概念自体がありません。初心者のうちは、staticにあたるものは、objectをつくって、そこに書くと思っていればいいでしょう。
implements
withつかいましょう
void
とりあえず、voidはUnitだと思っておけばよい
interface
trait使いましょう
enum
scala.Enumerationっていう、予約語ではなくclassがあり、これを使います。*3
default
defaultにあたるものを書きたい場合は、すべてにあてはまるパターンをmatch式の最後に書けばいいだけなので、この予約語はありません
*1:これも説明大雑把だし、それぞれ他に詳しく説明されてるところがあるので、ちゃんとしりたい人は、他のサイトみたり、本読んだりしましょう(・ω・`)
*2: おそらく、分類すると5箇所かな?ちゃんと言語仕様読んだわけではないけど。まえ分類してみたものがある
*3:しかし、バグがあり、使いづらくて、評判悪く、あまり使われてない・・・