- 逆引きRuby
- Scrapbox / 逆引きRuby
- Programming Ruby: The Pragmatic Programmer's Guide
- IBM developerWorks
- 2012-08-09: Rice を使用して Ruby の拡張機能を C++ で作成する
- ホワイの(感動的)Rubyガイド
- LoveRuby.Net
- fukayatsu.dev / 2014-01-01: BundlerでC拡張を含んだgemを作ってテストする
- @IT / 若手エンジニア/初心者のためのRuby 2.1入門
- GitHub / rubocop-hq / ruby-style-guide, 邦訳
- TECH CAMP ブログ / 2018-04-09: Rubyが書ければ他言語も書ける。Rubyライクな言語5選
- ASCII / プログラミング+ / Rubyで学ぶRuby, ネタ元:
def isClassname? object, classname object.const_defined?(classname) && object.const_get(classname).kind_of?(Class) endトップレベルの場合は object に Object を渡すと良い?
実行中のメソッド名は Kernel.#__method__, Kernel.#__callee__ で取得出来ます。
Object.#send に渡すと、メソッド名をハードコーディングせずに再起出来ます。
例えば、マニュアルのメソッド定義(1.8.7)にある、階乗(factorial)の例が以下のように書けます。
Object.#send に渡すと、メソッド名をハードコーディングせずに再起出来ます。
例えば、マニュアルのメソッド定義(1.8.7)にある、階乗(factorial)の例が以下のように書けます。
def fact(n) if n < 1 raise "num is not potitive integer" elsif n == 1 1 else n * send(__method__, n - 1) end endただ、末尾再起の最適化が効かない気がするので実行効率悪そうですが。
Shebang で ruby のパスを以下のように決め打ちしていると ruby のインストールディレクトリが異なる環境で実行出来ないだけでなく、 rbenv 等による実行環境のバージョン指定が機能しない。
#!/usr/bin/rubyShebang は以下のように書くことで ruby のパスが自動的に解決されるようにしておく方が良い。
#!/usr/bin/env rubyまたは
#!/bin/sh exec ruby -x "$0" "$@" #!ruby # coding: utf-8
タグ
コメントをかく