2014-03-09から1日間の記事一覧
下の例だとMySampleのparamフィールドはString型として使えるようになる。 class MySample[A] { var param:A = _ // 型パラメータの型を指定する def get:A = param def set(param:A) = this.param = param } object Sample { def main(args: Array[String])…
一般的にはコンストラクタやメソッドを使用するとき、引数を使用してパラメータ化する 型のパラメータ化とは、それと同じようにクラスやメソッドなどで使用する型そのものをパラメータ化再利用性を高める機能である。 型パラメータ名を指定していなくても型…
abstract class Engineer { println ("class Engineer constructor") def work(time:Int) } class Person extends Engineer { println ("class Person constructor") def work(time:Int) { println ("Person#work start") println ("1つのタスクを"+time+"分…
abstract宣言されたメソッドの中でsuperの呼び出しを行っている。 この場合、メソッドの具体的な定義がしてあるクラスやトレイトの後で ミックスインされているのであれば正しく動く。 定義内容が動的に束縛される。 こういう処理をやるためにはabstract ove…
superを利用してトレイトのwriteを呼び出す。 trait Programmer { def write = println("コードを書きます") } trait Writer { def write = println("記事を書きます") } class Person extends Programmer with Writer { override def write = super.write }…
概要 複数実装したトレイトの名前(シグネチャ)が同じ場合、 これらをまとめてミックスインしたらエラーになるので、 そのメソッドは必ずオーバーライドする必要がある。 コード trait Programmer { def write = println("コードを書きます") } trait Writer …
概要 複数のトレイトを使用した場合、コンストラクタが実行される順番は、 スーパークラスのコンストラクタのあとに自分自身のコンストラクタが呼ばれて その後ミックスインしている。 コード parant.scala class Parent { println("Parent") } class Child …
概要 脱REPL的なものを目指す。 Scalaメモ(コンパイル、main) - garbage truck コード コードはこんな感じ。 trait.scala trait Programmer { def coding = println("コーディングします") } // クラスが明示的に継承を行わない場合、extendsを使用してト…
(前提知識) // 16進数 1桁4ビット // 8進数 1桁3ビット // 16ビット部分をまとめて命令 // 命令の中身をopcodeとoperand // opcode operand // [89][01] // trapなどは8ビットずつに命令が分かれている // 4444 // その他の命令文は // 133333 // という構成…
let hoge = 'hoge' 同じ名前の別の変数を定義すること。OCaml由来。 両方の値に同じ名前を付けると、先に付けたほうの名前が「見えなくなる」というだけです。これを「シャドウイング(shadowing)」と言いますが、F#において、値が変わっているように見える…
名称 内容 入力 出力 プリプロセッサ #defineや#includeなどを変換 c c コンパイラ アセンブリ言語へ変換 c s アセンブラ オブジェクトファイル(機械語が入っているファイル)を生成 s o リンカ 実行可能ファイルを生成 o exeなど インタプリタ 直接実行でき…