ごきげんよう、erukitiです。僕が大好きなGolang, ES2015(Node.js)及び、心の故郷Rubyの比較形式のチートシートを作成中です。Ruby, Golang, JavaScriptを好きな人、これらを複数使って混乱している人は是非ご活用ください。一気に作成するのはしんどいので、このURLにてチビチビ作っていきます。ストックした人には更新が飛ぶようにします。
文字列
配列
| 内容 | Ruby2.2.0 | Golang | Node(ES2015) |
|---|---|---|---|
| 配列の結合 | self += other | slice = append(slice, other...) | Array.prototype.concat() |
| 内容のクリア | Array#clear | ||
| 要素で埋める | Array#fill | Array.prototype.fill() | |
| フィルタ | Array#keep_if | Array.prototype.filter() | |
| 各要素を処理(each) | Array#each | Array.prototype.forEach(), Array.prototype.map() | |
| 指定要素を含む? | Array#include? | Array.prototype.includes() | |
| 指定要素の最初の位置 | Array#find_index | Array.prototype.findIndex() | |
| 指定要素の最後の位置 | Array.prototype.lastIndexOf() | ||
| 先頭に要素追加(unshift) | Array#unshift | Array.prototype.unshift() | |
| 末尾に要素追加(push) | Array#push, self += other | slice = append(slice, elem) | Array.prototype.push() |
| 末尾から要素削除(pop) | Array#pop | Array.prototype.pop() | |
| たたみ込み(reduce) | Enumerable#inject | Array.prototype.reduce(), Array.prototype.reduceRight() | |
| リバース | Array#reverse | Array.prototype.reverse() | |
| 先頭から要素削除(shift) | Array#shift | Array.prototype.shift() | |
| ソート | Array#sort | Array.prototype.sort() |
プロセス
| 内容 | Ruby2.2.0 | Golang | Node(ES2015) |
|---|---|---|---|
| CLI引数(引数のみ) | Object::ARGV | os.Args[1:] | process.argv[2..] |
| CLI引数(自分自身の名前) | __FILE__ | os.Args[0] | process.argv[1] |
| 環境変数 | ENV | os.Getenv() | process.env |
| カレントディレクトリ取得 | Dir.getwd | os.Getwd() | process.cwd() |
| ホームディレクトリ取得 | Dir.home | os.homedir() | |
| ホスト名取得 | Socket.gethostname | os.Hostname() | os.hostname() |
| PID取得 | Process.#pid | os.Getpid() | process.pid |
| OS名取得 | runtime.GOOS | process.platform | |
| アーキテクチャ名取得 | runtime.GOARCH | process.arch | |
| 言語バージョン取得 | Object::RUBY_VERSION | runtime.Version() | process.version |
| 終了 | kernel.#exit | os.Exit() | process.exit() |
| 異常終了(コア) | panic() | process.abort() |
子プロセス
| 内容 | Ruby2.2.0 | Golang | Node(ES2015) |
|---|---|---|---|
| 子プロセス実行&結果取得 | `hoge` | exec.Command().Output() | child_process.exec() |
ファイルシステム
| 内容 | Ruby2.2.0 | Golang | Node(ES2015) |
|---|---|---|---|
| 一括ファイル読み出し | IO.read() | ioutil.ReadFile() | fs.readFile(), fs.readFileSync() |
| 一括ファイル書き出し | IO.write() | ioutil.WriteFile() | fs.writeFile(), fs.writeFileSync() |
| ファイル存在確認 | FileTest.#exist? | os.Stat() & os.IsExist() | fs.stat(), fs.statSync() |
| ディレクトリ作成 | Dir.mkdir | os.Mkdir() | fs.mkdir(), fs.mkdirSync() |
| ディレクトリ作成(mkdir -p) | FileUtils.#makedirs | os.MkdirAll() | |
| ファイル削除 | File.delete | os.Remove() | fs.unlink(), fs.unlinkSync() |
JSON
| 内容 | Ruby2.2.0 | Golang | Node(ES2015) |
|---|---|---|---|
| JSON生成 | JSON.#generate | json.Marshal() | JSON.Stringify() |
| JSON復号 | JSON.#parse | json.Unmarshal() | JSON.parse() |
オブジェクト操作
| 内容 | Ruby2.2.0 | Golang | Node(ES2015) |
|---|---|---|---|
| コピー(clone作成) | Object#clone | *1 | |
| メソッド一覧取得 | Object#methods | *1 | *1 |
| メンバー一覧取得 | Object#instance_variables | fmt.Printf("%+v\n", obj) | *1 |
ライブラリ
| 内容 | Ruby2.2.0 | Golang | Node(ES2015) |
|---|---|---|---|
| ロガー | logger | log | |
| CLIオプション解析 | optparse, getoptlong | flag |