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

day 25 @go for

goで繰り返し処理をするにはforを使う。基本的には昔ながらのforで for 初期化; 継続条件; 繰り返し後の処理 { 何かする。 } のように書く。違いは条件などを()で囲まないところくらい。 package main import "fmt" func main() { for i := 0; i < 10; i++ {…

day 25 @rust mod

モジュールはmodキーワードで作成する。 mod A { mod B { // some definitions. } fn Hello() { println!("?Hello¿"); } } 上記のようにモジュールを定義する。 モジュールないに定義できるものは、 · module · struct · enum · constant · function · trait

day 24 @go 便利な数値const

数値をconstで使うとコンテキストによって変わる。もしfloatの引数として使えばfloatにintで使えばintになる。 package main import "fmt" func plus_one(x float64) float64 { return x + 1.0 } func plus_two(x int) int { return x + 1 } const num = 1 <…

day 24 @rust パッケージ

パッケージの作成 Cargo new パッケージ名パッケージには0もしくは1つのライブラリを含めることができる。 パッケージには最低でも1つ以上のバイナリを含めることができる。その場合はsrc/binにどうにかこうにかするらしい。通例としてビルドするときのエン…

day 23 @go type interface

go では変数宣言時に型を代入演算子の右側の式から推論する。 しかし右側の式でリテラルを使って値を生成したときは値が決まっている。var i uint = 3 var j = i これはiがuintとかいてあるのでuintになるがvar j = 3 とするとintになる。 このように3.4とす…

day 23 @rust match

match大体はcaseと同じ基本構文 fn main() { var i = 'c'; match i { 'a' => println!("azasu"), 'b' => println!("baseball"), 'c' => { // {}で複数行の処理もできる。 println!("champion"); println!("victory"); }, _ => (), // _は任意の値という意味…

day 22 @go キャスト

基本構文 Type(value) のように書いてキャストする。 goではキャストする際は明示的に行わなければならない。 func main() { var num int = 3 var num2 uint = uint(num) }

day 22 @rust Option

Nullという値を使ってデータがない事を表すのはよくないという事でその代わりにrustではOptionを使う。Some(value) None の2つの選択肢をもつenumである。

day 21 @rust enum

rustでもenumを定義できる。 定義する方法とインスタンス化する方法。 enum MyEnum { A, B } fn main() { let e = MyEnum::A; } enum値を関数の引数にできるその際は型にはMyEnumの部分を使う。 またメソッドを構造体と同じ方法で定義できる。値を付与するこ…

day 21 @go zero value

goでは基本型では初期値が決まっているので他の言語のように初期化する必要はない。 package main import "fmt" func main() { var ( a int b bool ) fmt.Println(a, b) // -> 0 false }

day 20 @go ファクタードされた変数宣言

・import宣言のように変数もまとめて宣言できる。 package main import "fmt" var ( a int = 777 b bool = true c string = "I am lucky boy" ) func main() { fmt.Println(a, b, c) }

day 20 @rust メソッド

・メソッドの実装にはimplキーワードを使う。 struct Person { name: String, age: u8, greeting: String, } impl Person { fn hi(&self) { println!("{}", &self.greeting); } } メソッドにするには第一引数をselfを使わないといけない。 またselfも普通の…

day 19 @go :=を使った変数宣言

varを使う代わりに:=を使う事で変数を宣言できる。 しかし関数内でしか使えないという制限はある。 package main import "fmt" func main() { a := "value" fmt.Println(a) }

day 19 @rust 構造体の出力

まず普通のprint~系の関数はDisplayトレートを使ってフォーマットしている。 しかし自分で作った構造体にはそれを追加しなければならない。 しかし2つの条件を満たす事で出力できるようになる。 1つ目は"{}"の中で"{:?}"とする事 こうする事でDisplayでは…

day 19 @雑記 課題

・シンプルなプログラムを作れるようになる。 そのためにはどうすればいいか。 まず目標の変換 シンプルなプログラムを作れるようになるとはどういうことか シンプルとは 必要最低限の単純な物 つまり余分な物がない しかし余分かどうかは ある程度作られて…

day 18 @go 変数宣言

・varを使う ・変数の宣言は関数レベルとパッケージレベルで可能 func main() { var msg string = "hello:0" var msg2 string = "こんにちはノシ" var po, wer = "po", "wer" fmt.Println(msg, msg2, po, wer) }

day 18 @rust 構造体

・基本構文 struct User { name: String, email: String, age: u8, } ・構造体の使用 let user = User { email: String::from("Taro"), // 順番は関係ない。 name: String::from("hoge@hoge.com"), age: 10, }; let user_name = user.name; ・フィールド名の…

day 17 @go 名前付きリターン

・ネイキッドリターンともいうらしい。 ・戻り値に値を使わず、関数宣言時に戻り値も宣言する。 package main import "fmt" func add_10(x int) (result int) { result = x + 10 return } func main() { fmt.Println(add_10(99)) }

day 17 @rust スライス型

・スライス型には参照型同様に所有権の概念がない。・スライス型のシグニチャ &[type] // 例 &[u8] &[bool] &str let ary = [1, 2, 3, 4, 5]; スライス型の値の作り方。 let val: &[u8] = &ary[0..4]; let val = &ary[..4]; let val = &ary[0..4]; let val =…

day 17 @rust reqwestでスクレイピング少しできたx)

use reqwest; use std::convert::TryInto; use reqwest::Error; use tokio; extern crate regex; use regex::{Regex, Captures}; const VALID_CAR: [char; 16] = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F']; #[toki…

day 17 @rust reqwestでスクレイピングできなかったX(

use reqwest; use std::convert::TryInto; use reqwest::Error; use tokio; extern crate regex; use regex::{Regex, Captures}; const VALID_CAR: [char; 16] = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F']; #[toki…

day 16 @haskell =>がわからなかった

まずどういう風に使われていたか MonadIO m => FilePath -> m (~~) 調べたら 型パラメータがなんのインスタンスかを示すために物であった 例えば上の例だと=>の右側で使われているmという型パラメータはMonadIOのインスタンスすですよという意味。(Num a, Or…

day 16 @rust cライクなポインタ操作

fn main() { let mut num= 10; let num_ref = &mut num; add_five(num_ref); println!("{}",num); } fn add_five(ref_int: &mut i32) { *ref_int = *ref_int + 5; }

day 15 @js Tools

・ webpack モジュールの管理+αのことをする。・ babel トランスコンパイラ。過去バージョンとの互換性をうまくやってくれる。・ glup.js タスクランナー。・ npm node package manager・ Browserify nodeのモジュールをブラウザで使うために作られたが今で…

day 15 @go 関数定義

基本の3パターン func f1() { // Do something. } // 引数を扱う。 func f2(int x) { // Do something. } // 戻り値を扱う。 func f3() int { // Do something. }

day 15 @rust シャドイング

Rustでは一度使った変数を再宣言できる。 これによって何が起きるか。 mut じゃなくても再代入できる。 他の型の値を利用できる。 fn main() { let spaces = " "; let spaces = spaces.len(); // 下のように変数を分ける必要がない。 let spaces_str = " "; …

day 14 @rust 定数

・const キーワードを使って宣言 ・定数はどこでも定義できる。 const CONSTANT_VALUE: i32 = 100_000_000; fn main() { println!("{}", CONSTANT_VALUE); }

day 14 @go hello world

・すべてのプログラムはパッケージ上に作られる。 ・goのエントリーポイントになるパッケージはmain package main ・パッケージは最後のパスのファイル群で構成されている。 "math/rand" なら package randというファイル群で構成されている。 ・パッケージ…

day 14 @haskell interactの役割

interactの役割は標準入力の内容を引数の関数に渡して、戻り値を出力する。 main = interact getStringLength where getStringLength data = show(length data) ++ "\n" showは引数の値をを文字列に変換する。 lengthは文字列の長さを取得する。

day 13 @雑記 実際に効果があったと思う勉強法とか

・朝早くの勉強 ・夜寝る前の復習 ・メモを取る(きれいな文字で) ・実際に手を動かすことを繰り返す ・すでにある知識に紐付けながら勉強する ・ブログに書く ・声に出して読む ・一気に勉強しない(一時的に覚えててもしばらく経つとほとんど忘れてる気がす…