1.55k likes | 1.97k Views
ふつうの Ruby プログラマに贈る Ruby プログラミング講座. 13-B-3. 青木峰郎 日本 Ruby の会. 自己紹介. 青木峰郎 (日本 Ruby の会). Ruby がらみで やってること. Ruby 関係のおしごと. 書籍 『Rubyist Magazine 出張版 』 MYCOM 書籍 『Ruby レシピブック第二版 』 SBC r 書籍 『Ruby ソースコード完全解説 』 Impress 書籍 『Ruby を 256 倍使う本 無道編 』 ASCII リファレンスマニュアル刷新計画 隊長
E N D
ふつうのRubyプログラマに贈るRubyプログラミング講座ふつうのRubyプログラマに贈るRubyプログラミング講座 13-B-3 青木峰郎 日本Rubyの会
Ruby関係のおしごと 書籍『Rubyist Magazine出張版』 MYCOM 書籍『Rubyレシピブック第二版』 SBCr 書籍『Rubyソースコード完全解説』 Impress 書籍『Rubyを256倍使う本 無道編』 ASCII リファレンスマニュアル刷新計画 隊長 標準ライブラリいくつか (net/http, fileutils, ...) それ以外のアプリ各種 (BitChannel,Racc, ..)
agenda 1/2 • 第一部:Rubyプログラミングのツボ • protected • pとpp • unlessとuntil • クラスと名前空間 • ファイル名とクラス名 • 大クラス主義
agenda 2/2 • 第二部:Rubyプログラミングの、押しすぎるとヤバいツボのうちのいくつか • Visitorパターンめどい • 1.8と1.9でメソッド違いすぎwww
Rubyではprivateメソッドも継承する class Adef m() puts “OK” endprivate :m end class B < Adef call_m m end end フツーに呼べる
Rubyでprotectedが活用できる場面 class SomeObject attr_reader :prop protected :prop def ==(other) @prop == other.prop end end 外から (レシーバをつけた形式で)呼べる
C:\>ruby -e "p File.stat('.')"#<File::Stat dev=0x2, ino=0, mode=040755, nlink=1, uid=0, gid=0, rdev=0x2, size=0, blksize=nil, blocks=nil, atime=Wed Feb 13 06:55:59 +0900 2008, mtime=Sun Feb 13 21:03:44 +0900 2008, ctime=Thu Jun 29 16:52:04 +0900 2006>
C:\>ruby -rpp -e "pp File.stat('.')"#<File::Stat dev=0x2, ino=0, mode=040755 (directory rwxr-xr-x), nlink=1, uid=0, gid=0, rdev=0x2 (0, 0), size=0, blksize=nil, blocks=nil, atime=Wed Feb 13 06:55:59 +0900 2008 (1202853359), mtime=Sun Feb 03 21:03:44 +0900 2008 (1202040224), ctime=Thu Jun 29 16:52:04 +0900 2006 (1151567524)>
誰もがstderrに出力されることを期待しそして裏切られる誰もがstderrに出力されることを期待しそして裏切られる
多様な意図を表現するには多様な制御構造を使ったほうがいい多様な意図を表現するには多様な制御構造を使ったほうがいい