2020-11-01から1ヶ月間の記事一覧
・回復可能なエラーはResultを使うResultはenumで OkとErrの2つがある。・?オペレータ Resultを返す関数の後ろにつける。 もし関数が成功すれば中身の値を取り出して返す。 失敗すれば失敗をreturnする。 fn sample() -> Result<String, fs::io::Error> { let s = String::new(); f</string,>…
defer 式 とすることで遅延処理を書くことができる。 a := 1 defer fmt.Println(a + 1) a += 2 // printed 2 上記のように引数に対しての評価はその場でされる。
回復不可能なエラーを発生させるのに使う。 引数はメッセージpanic!("hoge hoge error occure");スタックとレースをするには BACKTRACE=1 cargo run とする。
switchの条件が省略されたときはtrueが適用される。 switch { case a > b: hoge() case a == b : hogehoge() default: hogex3() }
生成方法 1つめ HashMap::new() 2つめ vec1.iter().zip(vec2.iter()).collect();要素の取得 getメソッドを使う。所有権はhashmapに移動する。for (key, value) in hm { ~~ } の形で繰り返しができる。insertで値の上書きが可能。キーがあるなしで操作を変更…
switchは上から下へ条件の吟味をする。
・文字列の作成方法 String::new() String::from("~") ディスプレイを実装しているデータ型ならto_string() ・文字列の連結 .push_str("~") .push('a') +演算子 formatマクロ ・文字列に対してインデックス記法でのアクセスはできない。 ・文字列に対してス…
if v := 1; v < 10 { // vを使える。 } else { // ここでもvを使える。 } vはelseでも使える。
・ベクトル の作り方 1 Vec::new() 2 vec![a, b, c]ベクトルが破棄されるとその要素も破棄される。要素のへのアクセス インデックス記法もしくはgetメソッド要素の追加 pushメソッドv = vec![a, b,c];のとき for i in &v {} とすることでiterate可能複数の型…
goではifの中で変数の初期化ができるif i := 1; i fmt.Println(i) } ことのきiのスコープはif中のステートメントのみ。
・ファイルの分割 // 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…
c系の言語と同じ。ただ条件を()で囲む必要はない。 if condition { }
use を使ってインポートする。慣習として関数に関しては親モジュールをインポートして使い。 構造体、列挙型に関してはフルパスで指定する.参照名のエイリアスにはasを使う。 use A::B as C;pub useの組み合わせでインポートしたものをそのモジュールの一部…
go ではループにもforを使う package main import "fmt" func main() { cnt := 0 for { cnt += 1 fmt.Println(cnt) if cnt == 10 { break } } }
pub 対象の物をパブリックなものにする。 構造体、モジュール、関数、列挙型とうに使える。pub mod { ~~ }super モジュールの使用時に指定するパスにおいてファイルシステムの".."と同じ役割をする。構造体のアクセス権 フィールドごと、メソッドごとに指定…
forでは初期化部分と継続条件部分と事後処理部分があるが実際には継続条件さえあれば良い package main import "fmt" func main() { cnt := 0 for ; cnt < 100; ; { cnt += 10 } fmt.Println(cnt) }
モジュールの読み込みのパスには絶対パスとしての使い方と相対パスとしての使い方がある。絶対パスを使うにはパッケージ名、もしくはcrateキーワードを使う。相対パスではselfとsuperを使う。