ジョギング
- 香椎浜 x 2 周
- なんかギクシャクした感じがずーっと続いている
- 右足に強い張り
日課
- (腕立て x 50 + 腹筋 x 50) x 3
夕飯
- 適当に冷製パスタを作った
- 適当な割には美味しかった
今日のるびぃ ~ Ruby 技術者認定試験合格教本 (Silver/Gold 対応) Ruby 公式資格教科書 模擬試験 (1) ~
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 A $a = self def foo $b = self end end a = A.new print A == $a, A.new == $b
以下, 解答.
- truefalse が表示される
以下, irb にて確認.
irb(main):001:0> class A irb(main):002:1> $a = self irb(main):003:1> def foo irb(main):004:2> $b = self irb(main):005:2> end irb(main):006:1> end => :foo irb(main):007:0> irb(main):008:0* a = A.new => #<A:0x005605a2273c58> irb(main):009:0> print A == $a, A.new == $b truefalse=> nil
- クラス定義中の
self
は, そのクラスオブジェクトとなる - インスタンスメソッド中の
self
は, そのクラスのオブジェクトとなる $a
には クラスA
が代入されるが,$b
は, メソッドfoo
が実行されなければ値は代入されない為,nil
となる
両方が true
になるパターン.
irb(main):001:0> class A irb(main):002:1> $a = self irb(main):003:1> def foo irb(main):004:2> $b = self irb(main):005:2> end irb(main):006:1> end => :foo irb(main):007:0> a = A.new => #<A:0x0055c380ca0c08> irb(main):008:0> print A == $a true=> nil irb(main):009:0> print A.new.foo == $b true=> nil
DateTime 同士の演算
以下のコードを実行するとどうなるか.
require 'Date' d1 = DateTime.new d2 = DateTime.new p (d2 - d1).class
以下, 解答.
- Rational が表示される
以下, irb にて確認.
irb(main):001:0> require 'date' => true irb(main):002:0> d1 = DateTime.new => #<DateTime: -4712-01-01T00:00:00+00:00 ((0j,0s,0n),+0s,2299161j)> irb(main):003:0> d2 = DateTime.new => #<DateTime: -4712-01-01T00:00:00+00:00 ((0j,0s,0n),+0s,2299161j)> irb(main):004:0> p (d2 - d1).class Rational => Rational
以下, 解説より抜粋.
DateTime
同士の演算はRational
インスタンスとなる
以下, ドキュメントより抜粋.
DateTime
はDate
クラスのサブクラスDate
クラスは日付のみDateTime
クラスは時刻も扱うことが出来る
irb(main):001:0> require 'date' => true irb(main):002:0> a = DateTime.new(1993, 2, 24, 12, 30, 45) => #<DateTime: 1993-02-24T12:30:45+00:00 ((2449043j,45045s,0n),+0s,2299161j)> irb(main):003:0> b = DateTime.parse('1993-02-24T12:30:45') => #<DateTime: 1993-02-24T12:30:45+00:00 ((2449043j,45045s,0n),+0s,2299161j)> irb(main):004:0> b += 10 => #<DateTime: 1993-03-06T12:30:45+00:00 ((2449053j,45045s,0n),+0s,2299161j)> irb(main):005:0> (b - a) => (10/1) irb(main):006:0> (b - a).class => Rational irb(main):007:0> DateTime.now - 1 => #<DateTime: 2018-07-02T09:23:19+09:00 ((2458302j,1399s,943836661n),+32400s,2299161j)> irb(main):008:0> (DateTime.now - 1).class => DateTime
フムフム.