2008-12-01から1ヶ月間の記事一覧

スプラッタ

単項演算子のアスタリスクの意味がよく分からない。 irb(main):001:0> a = [1,2,3] => [1, 2, 3] irb(main):002:0> p a [1, 2, 3] => nil irb(main):003:0> p *a 1 2 3 => nil irb(main):004:0> *b = 4,5,6 => [4, 5, 6]配列をバラしてオブジェクトの並びに…

Social IMEをコマンドラインから

Web 2.0時代のかな漢字変換Webサービス「Social IME」がAPIを公開している。これがWebサービスとかRESTとか、JSONとか、そんなややこしいものじゃなくて、単に「/api?string=」で文字列を渡せば、ペロンとタブ区切り、改行区切りの変換候補文字列がプレーン…

なぜコンストラクタは多段ロケットみたいなの?

Rubyではオブジェクトをインスタンス化するのにnewメソッドを使う。でも実際にはinitializeというメソッドが呼ばれる。なんでこの2つが一致していないのか、どうも分からない。str=String.intialize("hello")とかでいいんじゃないの?The Ruby Wayにはちょっ…

クラスのfreeze

オブジェクトはObject#freezeメソッドで凍結できるというじゃないか。 str = "hey" str.freeze str.upcase! # TypeError: can't modify frozen string ということはClassオブジェクトもかしらと思ってやってみた。 String.freeze class String # TypeError: …

injectの練習問題

与えられた単語のリストから、もっとも多く母音が含まれる単語を返す。というのは、injectを使う例として恣意的に考え付いた練習問題だけど。ついでにString#scanも使ってみたかった。 class String def number_of_vowels scan(/[aiueo]/).size end alias si…

クラスメソッド練習問題

クラスメソッドの練習問題。アルコールの分解速度はその人がもつ酵素の構成で遺伝的に決まっており、二日酔いにならない飲酒量というのは人それぞれで決まっている。問題は、世の中にはいろんな種類のお酒があって、いわゆる「チャンポン」な飲み方をすると…

ruby-modeあなどりがたし

ruby-modeをあなどっていた。単にインデントやキーワードの色付けをしてくれるだけじゃなく、endの自動補完とかリージョンをirbに送りつけて別バッファで実行するといったこともできるらしい。Emacs万歳だ。 (require 'ruby-electric) (add-hook 'ruby-mode-…

singletonを調べてみる

「シングルトン(singleton)」という言葉が気になっていろいろ読み漁っている。もともとRHGのクラスの実装の解説を読んでいたところで「特異メソッド」というのが出てきて、これは一体なんだと思ったというのがきっかけ。ヘンな取っ掛かりだ。RHGは相変わら…

演算子? メソッド?

演算子の「+」や「-」は実際にはメソッド。自己代入演算子の「+=」はシンタックス・シュガーで、実際には「+」で定義されたメソッドが展開されているだけだという。演算子に見えるものはメソッドなのでオーバーライドできる。 class Fixnum def +(n) self **…

Ruby道

Ruby Way 第2版 (Professional Ruby Series)作者: Hal Fulton,豊田祐司,株式会社クイープ出版社/メーカー: 翔泳社発売日: 2008/04/15メディア: 大型本購入: 2人 クリック: 221回この商品を含むブログ (24件) を見る Hal Fultonさんが書いた「The Ruby Way」…

計算の途中経過の保存

計算途中の値をとりあえず保存したり、そのための変数名を用意するするのって何だか面倒な気がするけど、Rubyでどうやったらそれをなくせるのかがよく分からない。与えられた数値のリストから平均値を求める計算は、Lispでは以下のように書ける、というか以…