ジョギング, 日課
- お休み
久留米デート
やりたいことを短時間で済ませることが出来た, とても効率の良いデートだった (笑. 奥さんも喜んでくれたようで良かった.
今日のるびぃ ~ REx - Ruby Examination にチャレンジ (17) ~
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)
キーワード引数
以下のコードを実行するとどうなるか.
def foo(arg1:100, arg2:200) puts arg1 puts arg2 end option = {arg2: 900} foo arg1: 200, *option
例外が発生する
以下, irb にて確認.
irb(main):001:0> def foo(arg1:100, arg2:200) irb(main):002:1> puts arg1 irb(main):003:1> puts arg2 irb(main):004:1> end => :foo irb(main):005:0> irb(main):006:0* option = {arg2: 900} => {:arg2=>900} irb(main):007:0> irb(main):008:0* foo arg1: 200, *option SyntaxError: (irb):8: syntax error, unexpected * foo arg1: 200, *option
以下, 解説より抜粋.
- キーワード引数へ Hash オブジェクトを渡すことが出来る
- Hash の中身を渡す必要があるので, 変数の前に
**
を付加する
以下, 正しく動くコード.
def foo(arg1:100, arg2:200) puts arg1 puts arg2 end option = {arg2: 900} foo arg1: 200, **option
以下, irb にて確認.
irb(main):001:0> def foo(arg1:100, arg2:200) irb(main):002:1> puts arg1 irb(main):003:1> puts arg2 irb(main):004:1> end => :foo irb(main):005:0> irb(main):006:0* option = {arg2: 900} => {:arg2=>900} irb(main):007:0> irb(main):008:0* foo arg1: 200, **option 200 900 => nil irb(main):009:0> foo(arg1: 200, **option) 200 900 => nil
Complex, Fixnum, Float 等
以下のコードを実行するとどうなるか.
val = 10i * 2i puts val.class
Complex クラスと出力される
以下, irb にて確認.
irb(main):010:0> val = 10i * 2i => (-20+0i) irb(main):011:0> puts val.class Complex => nil
以下, 解説より抜粋.
10i
は複素数 (Complex) のオブジェクトを表す- Complex 同士の演算は Complex を返す
その他の演算について確認.
# Fixnum と Complex の演算結果は Complex irb(main):014:0> v1 = 10 * 2i => (0+20i) irb(main):015:0> v1.class => Complex # Fixnum と Rational の演算結果は Rational irb(main):016:0> v2 = 10 * 2r => (20/1) irb(main):017:0> v2.class => Rational # Fixnum と Float の演算結果は Float irb(main):018:0> v3 = 10 * 2.0 => 20.0 irb(main):019:0> v3.class => Float # Complex と Rational の演算結果は Complex irb(main):020:0> v4 = 10i * 2r => ((0/1)+(20/1)*i) irb(main):021:0> v4.class => Complex
フムフム.