ジョギング
- 香椎浜 x 2 周
- なんかギクシャクした感じがずーっと続いている
日課
- (腕立て x 50 + 腹筋 x 50) x 3
梅雨明け
- すごい爪痕を残して梅雨が明けた
- 被災された方々には心からお見舞い申しあげます
- これから暑さも含めた戦いが待っているのかと考えると, たかが雨, されど雨, すごく胸が痛くなった
放送大学に提出していたレポートが添削されて返ってきた
- 読みづらい文字だったけど, ちゃんと赤ペン入れてくれていた
- 一応, 単位認定試験の受験資格を得ることが出来た
今日のるびぃ ~ REx - Ruby Examination にチャレンジ (48) ~
REx - Ruby Examination の問題を自分なりにアレンジした上で 1 〜 3 問くらいずつ解いていく. 正直言ってかなり難しい. 尚, irb に動作確認環境は以下の通り.
$ ruby --version ruby 2.1.10p492 (2016-04-01 revision 54464) [x86_64-linux] $ irb --version irb 0.9.6(09/06/30)
アクセサメソッド
以下のコードにおいて, 指定した行を書き換えた時に同じ結果になるものを選べ(複数選択)
class C attr_accessor :v # ここを書き換える end c = C.new c.v = 100 p c.v
上記のコードをとりあえず irb で実行してみる.
irb(main):001:0> class C irb(main):002:1> attr_accessor :v # ここを書き換える irb(main):003:1> end => nil irb(main):004:0> irb(main):005:0* c = C.new => #<C:0x00558de4a1c260> irb(main):006:0> c.v = 100 => 100 irb(main):007:0> p c.v 100 => 100
以下, 解答.
# 解答 1 attr_reader :v attr_writer :v # 解答 2 def v=(other) @v = other end def v @v end
以下, 解答を irb にて確認.
# 解答 1 irb(main):001:0> class C irb(main):002:1> attr_reader :v irb(main):003:1> attr_writer :v irb(main):004:1> end => nil irb(main):005:0> irb(main):006:0* c = C.new => #<C:0x00557a3df1fad8> irb(main):007:0> c.v = 100 => 100 irb(main):008:0> p c.v 100 => 100 # 解答 2 irb(main):009:0> class C irb(main):010:1> def v=(other) irb(main):011:2> @v = other irb(main):012:2> end irb(main):013:1> def v irb(main):014:2> @v irb(main):015:2> end irb(main):016:1> end => :v irb(main):017:0> irb(main):018:0* c = C.new => #<C:0x00557a3dec1618> irb(main):019:0> c.v = 100 => 100 irb(main):020:0> p c.v 100 => 100
以下, ドキュメントより抜粋.
- Module#attr_accessor
- インスタンス変数
name
に対する, 読み取り及び書き込みメソッドの両方を定義する - パラメータは
String
又はSymbol
で渡す (複数定義が可能) - このメソッドで定義されるメソッドは以下の通り
- インスタンス変数
def name @name end def name=(val) @name = val end
- Module#attr_reader
- インスタンス変数
name
に対する, 読み取りメソッドを定義する - パラメータは
String
又はSymbol
で渡す (複数定義が可能) - このメソッドで定義されるメソッドは以下の通り
- インスタンス変数
def name @name end
- Module#attr_writer
- インスタンス変数
name
に対する, 書き込みメソッドを定義する - パラメータは
String
又はSymbol
で渡す (複数定義が可能) - このメソッドで定義されるメソッドは以下の通り
- インスタンス変数
def name=(val) @name = val end
フムフム.