7つの言語7つの世界 Ruby 2日目
探してみよう
試してみよう
感想等
感想
クラスさえもClassクラスのインスタンス。全てがオブジェクト。
そしてModule.classはClassで、Module.class.superclassはModuleで…と頭がこんがらがりそう。
mixinの仕組みは便利ですね。Enumerableはいろんな演算を抽象化していて面白い。
試してみようはTree.rbがあんまりすっきり書けてない感じ。
本文に「このレベルの抽象化でも少しは優れたプログラミング言語になるが、Rubyの真の秘術が登場するのはまだまだこれからだ。」と書いているので次の章が楽しみです。
疑問点
- PHP 5.4のtraitもmixinのようなものなのかな?
メモ
- 配列やハッシュやシンボルのリテラルは書き方いくつかあるので詳しくはhttp://doc.ruby-lang.org/ja/1.9.2/doc/spec=2fliteral.htmlを見る
- 配列
- [ ]や[ ]=はArrayクラスのメソッド、なのでundefined_variable[0] = 'hoge'とか宣言してない変数の[0]に値を入れようとするとメソッドないよとエラーが出る
- Rangeを渡したり-1を渡したり使いやすい。キュー、リスト、スタック、セットのように使えるし、どんな型でもok多重配列もok
- ハッシュ
- 「Rubyが本当の力を発揮するのは、コードブロックを使い始めたとき」
- コードブロック
- 詳しくはhttp://doc.ruby-lang.org/ja/1.9.2/doc/spec=2fcall.htmlを参照
- 名前のない関数のようなもの、関数やメソッドに引数として実行可能なコードを受け渡し出来る
- 用途
- ファイルの角行の処理
- HTTPトランザクション内で処理
- コレクションに対して複雑な演算
- 他にも至るところでブロックが使われる
- Rubyの慣習では1行だけのコードブロックはブレースで、複数業にまたがるコードブロックはdo/endで囲む
- クラス
- 継承関係
- 慣習、規則
- クラスは大文字で始まりキャメルケース
- インスタンス変数とメソッド名は小文字で始まり、区切りにアンダースコア
- 定数は全て大文字で書く
- インスタンス変数の先頭には@をつける
- クラス変数の先頭には@@をつける
- 判定用の関数とメソッドには通常、疑問符をつける
- アクセッサを定義するメソッドがModuleで定義されている(http://doc.ruby-lang.org/ja/1.9.2/class/Module.html)
- attrとattr_accessorがよく使われる
- モジュール
- mixin
Reia
p24のtree.rbの例に書いてあったもの。
Reia Programming Language
Erlang VM(BEAM)上で動くRuby-likeな言語らしい。
でももう開発止まっててこれ以上何かを追加する計画はないので興味があるならElixirをチェックしろと書いてますね。
面白そう。Erlangの章読んだらまたチェックしたい。
本見ながら書いたもの
tree.rb
to_file.rb