2020-08-01から1ヶ月間の記事一覧

基本トレイト

概要 Rustの型(struct, enum)は継承が不可。 メソッドは実質関数に過ぎない。 ある特定の振る舞いの抽象化はトレイトを通して実現する。 (この点からRustの型はHaskellのdata型、トレイトは型クラスに対応すると考えることが出来る。) 標準スタンダードライ…

所有権 備忘録

所有権 移譲 (Move) 借用 (Borrow) 移譲 let a = String::from("Hello World"); let b = a; // 値の所有権が移ると変数aは二度と使えない 借用 参照にすることで、値の借用となる。 let a = String::from("Hello World"); let b = &a; // immutable borrowが…

Haskell備忘録

型システム data型 data 型シノニム type 型クラス class data型を使って型を定義する。 data型は継承できないため、型クラスを使って共通化を行う。 型クラスを実装したdata型はその型クラスのインスタンスと呼ぶ。 data型 Haskelの型。代数的データ型。 da…

Rustの標準ライブラリが難しい

標準入力から文字列を読み取るサンプル例 use std::io; fn main() -> io::Result<()> { let mut buffer = String::new(); let stdin = io::stdin(); let mut handle = stdin.lock(); handle.read_to_string(&mut buffer)?; Ok(()) } 上記はコンパイルエラー…

オブジェクト指向開発 in vimscript

クラスの実装 宣言 let s:Person = {} コンストラクタ function! s:Person(name, age, gender) let p = deepcopy(s:Person) let p.name = a:name let p.age = a:age let p.gender = a:gender endfunction メソッドの定義 function! s:Person.getName() retur…