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)で取得することができます。

$ true | false | (exit 1) | (exit 8)
$ echo ${PIPESTATUS[@]}
0 1 1 8

これを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!を運営しています。

Published: June 27 2015

blog comments powered by Disqus