[Scala]入門 クラスとパッケージ
以下の連載の6回目読んだ。
http://www.atmarkit.co.jp/ait/kw/scala.html
覚えておきたいことメモ
クラス
・コンストラクタに渡した値はそのまま使える
class Hoge(val v:Int) val hoge = new Hoge(1) println(hoge.v) //err hoge.v = 2
valもvarもついていないと外に見えない
class Piyo(val v:Int) val piyo = new Piyo(1) err println(piyo.v)
・require(条件式)でアサーションする
class PG(val lang:String){ require(lang != null) //IllegalArgumentExceptionが投げられる }
★パラメータなしのメソッドはフィールドでオーバーライドできる
abstract class X{ def value:Int = { println("X value") 1 } } class Y extends X{ override val value = 2 }
アクセス修飾子
・クラスのアクセス修飾子はデフォルト
・protectedは継承先のみ見える、Javaと違い同パッケージは見えない
・パッケージ指定ができる
fooとそのサブパッケージにのみ見せる
private[foo] class Hoge
・別インスタンスからのアクセスを禁止できる
private[this] val name= "hoge"
インポート
一括インポート
import foo.bar._
指定インポート
import java.util.{List,Map}
エイリアスを与えてインポート
import java.util.{Date => MyDate}
暗黙に行われているインポート
import java.lang._ //標準のJavaクラス。 import sclala._ //scalaパッケージ。Listなど。 import Predef._ //Predefオブジェクト。printlnやタプル(を生成する関数)
objectをインポートすると、オブジェクト名を指定せず利用可能(static import状態)
・よく分かってない事
パターンマッチとcaseクラスとsealedクラス
パッケージオブジェクト