Golang 戻り値を表す変数

Golangでは戻り値に変数を割り当てることができる。 package main import "fmt" func doSomething() (a int) { return } func main() { fmt.Println(doSomething()) } 実行すると結果は0が返ってくる。 returnは何も返していないように見えるが以下のコード…

Golang interface{}

interface{}は{}も含めて型の名前。 int, float64, stringなど全ての型と互換性をもっている。 var x interface{} fmt.Printf("%#v", x) // "<nil>" のように初期値は "<nil>" と出力される。 Goにおける"<nil>"は具体的な値を持っていないという状態を表す特殊な値になる。</nil></nil></nil>…

Go 変数

Goにおけるすべての変数は型を備える。 値型 参照型 ポインタ型 値型は整数、実数といった値そのものを格納する。 参照型はスライス、マップ、チャネルのいずれかのデータ構造。 ポインタ型は値や関数といったメモリ上の実態を、アドレス値によって間接的に…

ruby split

rubyのsplit メソッド str.split(pattern = $;, [limit]) splitメソッドは、引数patternを区切り文字として文字列を分割し、配列を返します。引数の指定のしかたによってさまざまな分割ができます。分割できなかったときは、要素が文字列1つだけの配列を返し…

Elixir 開発環境

Elixirの勉強を個人的に始めたので覚書を残す。 dockerでElixirを使えるようにする 以下コマンドでdocker imageをpullする docker pull trenpixster/elixir docker上のelixir imageを起動する docker run --rm -v /Users/kei/takakuda/elixir_tutorial:/elix…

gem 作り方覚書

準備 # gem自信のupdate gem update --system # bundlerのupdate gem update bundler # generatorからプロジェクト作成 bundle gem new_gem -t -tはテストも作成するoption defaultでRSpec 他のgemと名前がかぶってはいけないので gem search new_gem で名前…

Rubyにおける「シンボル」ってなんだ?

結局「シンボル」ってなに… 結論から言うとシンボルはRubyの内部で整数として扱われる。2つの値が同じか調べるときなど、文字列よりも高速に処理することができる。 シンボルのほうがさらにメモリの使用効率が良いらしい。 irb(main):009:0* 'a'.object_id =…

for文とeachの違いってなんなん?

最近コードレビューをしていて、for文を使っているコードを読んだときに、「Rubyだったらeach使いなよ」とレビューしてました。 Rubyだったらeach。お決まりのように考えていたのですが…なんで? 違い 結論から言うと、for文は配列の要素を受け取る変数、for…

do...end と {} の違い

do...end と {} の違い 基本的にはどっちを使っても結果は同じ。 違いは、 do...end よりも {} のほうが 結合度が強い どういうことか? 配列のdeleteメソッドの例 a = [1, 2, 3] a.delete(100) => 0 a.delete(100) do 'できない' end => "できない" ブロッ…

ブロックローカル変数

ブロックローカル変数とは? あまり使う機会はない。というか使わないと思う。 だけどもまたRuby勉強し直してて初めて知ったことなのでめも。 ブロック引数を;で区切り、続けて変数を宣言すると、ブロック内でのみ有効な独立した変数を扱うことができる numb…

rake taskで可変長引数を使う

rake taskで可変長引数を使う 約1年間Railsエンジニアやってて初めてrake task書いた。 その時のめも。 to_a メソッドを使う namespace :test_task do desc '可変長引数を受け取るtask' task :hoge, ['huga'] => :environment do |_task, args| p args.to_a …

Ruby勉強し直してみた 3

メソッドの可変長引数 Ruby勉強し直してて普段あんま使ったことないのでめも。 自分で定義するメソッドで可変長引数を使いたければ引数名の手前に*をつける def メソッド名(引数1, 引数2, *可変長引数) # メソッド処理 end みたいに。 例 def test(*name) na…

Ruby勉強し直してみた 2

inject/reduce たたみ込み演算なるもの… 例を見たほうが早い numbers = [1, 2, 3, 4] sum = numbers.inject(0) { |result, n| result + n } ブロックの第一引数(result)には初回のみinjectメソッドの引数が入る。 2回目以降は前回のブロックの戻り値が入る。…

Danger 導入した

機械的なレビューを自動で行ってくれるDangerというgemを最近導入したので、その時の Dangerってそもそも何? DangerのGithubには以下のことが書かれています Stop saying "you forgot to …" in code review Formalize your Pull Request etiquette. 「あな…

Rails ActiveRecord いろいろ

仕事柄プルリクをレビューすることが多々あるのですが、やっぱりまだまだわかっていないことが多い… 忘れないようにメモメモ… inverse_of inverse_of を指定したリレーションのある2つのモデルでは、双方から同一のインスタンスを参照することができる。 つ…

Ruby勉強し直してみた 1

Railsエンジニアになってはや1年が経とうとしています。そんな中で最近思うのですが「Railsはわかってきたけれども、Rubyが全くわからない…」 これはやべぇと思い、ここで改めてRubyを勉強し直していきます その備忘録 Rubyの演算子 rubyの演算子には優先度…

Go langでFizzBuzz

田舎育ちのエンジニアです Go lang気になってたのでちょっと勉強始めてみました 備忘録です。 Go langとは Go言語は2009年にGoogleによって作られたオープンソースの静的言語です。 特徴としては ・ シンプル ・ コンパイル・実行速度が早い。 ・ 安全性が高…