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

day 34 @rust 回復可能なエラーを発生させる。

・回復可能なエラーはResultを使うResultはenumで OkとErrの2つがある。・?オペレータ Resultを返す関数の後ろにつける。 もし関数が成功すれば中身の値を取り出して返す。 失敗すれば失敗をreturnする。 fn sample() -> Result<String, fs::io::Error> { let s = String::new(); f</string,>…

day 33 @go defer

defer 式 とすることで遅延処理を書くことができる。 a := 1 defer fmt.Println(a + 1) a += 2 // printed 2 上記のように引数に対しての評価はその場でされる。

day 33 @rust panicマクロ

回復不可能なエラーを発生させるのに使う。 引数はメッセージpanic!("hoge hoge error occure");スタックとレースをするには BACKTRACE=1 cargo run とする。

day 32 @go 条件省略 switch

switchの条件が省略されたときはtrueが適用される。 switch { case a > b: hoge() case a == b : hogehoge() default: hogex3() }

day 32 @rust hash map

生成方法 1つめ HashMap::new() 2つめ vec1.iter().zip(vec2.iter()).collect();要素の取得 getメソッドを使う。所有権はhashmapに移動する。for (key, value) in hm { ~~ } の形で繰り返しができる。insertで値の上書きが可能。キーがあるなしで操作を変更…

day 31 @go switch

switchは上から下へ条件の吟味をする。

day 31 @rust string

・文字列の作成方法 String::new() String::from("~") ディスプレイを実装しているデータ型ならto_string() ・文字列の連結 .push_str("~") .push('a') +演算子 formatマクロ ・文字列に対してインデックス記法でのアクセスはできない。 ・文字列に対してス…

day 30 @go short statement

if v := 1; v < 10 { // vを使える。 } else { // ここでもvを使える。 } vはelseでも使える。

day 30 @rust コレクション1 vec

・ベクトル の作り方 1 Vec::new() 2 vec![a, b, c]ベクトルが破棄されるとその要素も破棄される。要素のへのアクセス インデックス記法もしくはgetメソッド要素の追加 pushメソッドv = vec![a, b,c];のとき for i in &v {} とすることでiterate可能複数の型…

day 29 @go short statement if

goではifの中で変数の初期化ができるif i := 1; i fmt.Println(i) } ことのきiのスコープはif中のステートメントのみ。

day 29 @rust モジュールの分割

・ファイルの分割 // lib.rs mod mod_a; // mod_a.rs pub fn hello() { println!("hello"); } src I- lib.rs L mod_a.rs・ディレクトリ を用いた分割。 // lib.rs mod mod_a; // mod_a.rs pub mod mod_b; // mod_a/mod_b.rs pub fn hello() { println("hello…

day 28 @go if

c系の言語と同じ。ただ条件を()で囲む必要はない。 if condition { }

day 28 @rust インポート

use を使ってインポートする。慣習として関数に関しては親モジュールをインポートして使い。 構造体、列挙型に関してはフルパスで指定する.参照名のエイリアスにはasを使う。 use A::B as C;pub useの組み合わせでインポートしたものをそのモジュールの一部…

day 27 @go loop

go ではループにもforを使う package main import "fmt" func main() { cnt := 0 for { cnt += 1 fmt.Println(cnt) if cnt == 10 { break } } }

day 27 @rust pub & super

pub 対象の物をパブリックなものにする。 構造体、モジュール、関数、列挙型とうに使える。pub mod { ~~ }super モジュールの使用時に指定するパスにおいてファイルシステムの".."と同じ役割をする。構造体のアクセス権 フィールドごと、メソッドごとに指定…

day 26 @go forループで必要な物

forでは初期化部分と継続条件部分と事後処理部分があるが実際には継続条件さえあれば良い package main import "fmt" func main() { cnt := 0 for ; cnt < 100; ; { cnt += 10 } fmt.Println(cnt) }

day 26 @rust モジュールのパス

モジュールの読み込みのパスには絶対パスとしての使い方と相対パスとしての使い方がある。絶対パスを使うにはパッケージ名、もしくはcrateキーワードを使う。相対パスではselfとsuperを使う。