6/24(水)にNTT-ATさんの会議室にてkawasaki.rb #025を開催しました。
togetterのまとめはこちら
パーフェクトRuby読書会
「4-1-2 インスタンスメソッド」まで終えました。
4-1 クラス
4-1-1 インスタンスの生成/初期化
Rubyではクラスの定義は以下のように行います
1
2
class クラス名
end
クラス名は大文字のアルファベットで始める必要があります。また、ClassNameのようなキャメルケースで命名するのが慣習です。 クラス定義の中には自由に式を記述することができ、たとえば定数を定義するときは
1
2
3
4
5
class MyClass
DEFAULT_VALUE = 4423
end
MyClass::DEFAULT_VALUE # => 4423
とし、定義した定数は::で参照できます。
ここで、会場ではClass#nameで取得できる値は、定数にClassのインスタンスを代入したタイミングで生成されるという話になりました。
1
2
3
4
5
6
7
8
Class.name # => "Class"
Class.new.name # => nil
hoge = Class.new
hoge.name # => nil
Hoge = Class.new
Hoge.name # => "Hoge"
HOGE = Class.new
HOGE.name # => "HOGE"
と、Class.newを変数に代入した場合、Class#nameはnilを返し、定数に代入した場合はその定数名が返るようになります。
4-1-2 インスタンスメソッド
クラス内でメソッドを定義するとインスタンスメソッドとなります
1
2
3
4
5
6
7
8
9
10
11
12
class MyClass
def method_a
puts 'method_a calld'
end
def method_b
method_a
end
end
my_object = MyClass.new
my_object.method_b # => 'method_a calld'
メソッド名の末尾には疑問符や感嘆符を使うことができます。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class Brownie
def initialize
@baked = false
end
def bake!
@baked = true
self
end
def baked?
@baked
end
end
b = Brownie.new
b.baked? # => false
b.bake!
b.baked? # => true
Rubyでは慣習として、真偽値を返すメソッドには疑問符を用いて「baked?」という名前で定義します。 感嘆符を用いる場合は、プログラマに対して注意を促したいときや、破壊的なメソッド(自身を更新するメソッド)に使われます。
今回のiruby notebookは以下のとおりです。
セッション
Ruby でシェルがやってるようなコマンドのパイプライン処理を行ってそれぞれの exitstatus を取得する話 from @kechakoさん
シェルでコマンドをパイプでつなぎ、各コマンドの終了コードを得たい場合、bashでは$PIPESTATUS
(zshでは$pipestatus
)で取得することができます。
これをRubyで再現させた試みについて発表されました。 発表に使われたgistsはこちらです。
gistsのcmd_pipeメソッドを以下のように呼んであげると、
1
2
p cmd_pipe('true', 'false', '(exit 1)', '(exit 8)')
# => [#<Process::Status: pid 4588 exit 0>, #<Process::Status: pid 4589 exit 1>, #<Process::Status: pid 4590 exit 1>, #<Process::Status: pid 4591 exit 8>]
のように出力することができます。
Enjoy the Ansible from @Y_Fujikawaさん
Ansibleの紹介から、勉強会を開くための準備、マインドマップを使用した思考整理術などについて発表されていました。
発表のベースとなったブログはこちらです。
次回予告
次回は7/22(水)開催で、LT大会を行う予定です。ご参加お待ちしております。
寄稿者について
松久保 敬人 (@Peranikov)
RailsからiOSから何でもやってる人。お酒を投稿するサイトPuhaar!を運営しています。