2019-09-01から1ヶ月間の記事一覧

組み込みクラス: IO編

Fileクラスのスーパークラスなので、IOクラスのメソッドの多くはFileクラスでも使用可能。 IOを開く Fileの時と同じく、openは第二引数でモードを指定しなければ、readモードとなる。 io = open("text.txt","r+"){ |io| io.write("HelloWorld from Ruby IO."…

組み込みクラス: Dir/File編

逃げ続けてきた範囲だが、大きな弱点になっている気がしたので、試験直前だが復習してみる。 Dir Class open/close openメソッドはブロックをとることが出来、ブロックを閉じたところで、自動的にcloseさせることが出来る。 また、ブロック内でDirクラスのイ…

Ruby silver模擬試験誤答一覧 その3

Hashでblockを使うと ブロック内部では各要素が配列(1つ目にキー、2つ目に値)の形で渡される。 irb(main):005:0> h.each {|p| p p } [:a, 100] [:b, 200] => {:a=>100, :b=>200} Integer#step では、ループの中で自分自身を含む。 (例:1.step(5,1)という…

組み込みクラス: 数値型クラス編

ceil 破壊的なし 大きいほうへ切り上げ(ただし、自身が整数ならそのまま)。型自体も変更されるので、破壊的なメソッドはない。「2.0」のようにはならない。 floor 小さいほうへ切り下げ(ただし、自身が整数ならそのまま)。型自体も変更されるので破壊的…

Ruby silver模擬試験誤答一覧 その2

可変長引数は2つ以上なければよい。 可変長引数は先頭か末端になければならないと錯覚していたので、これは発見だった。 def method(ichi,ni,*san,shi,go) p ichi p ni p san p shi p go end method(1,2,3,4,5,6,7,8,9,0) pyons@LAPTOP-SF87NLCB:/mnt/c/User…

組み込みクラス: modules編

RExをやっている限り頻出範囲という印象を受けるので、ちゃんと覚えておきたい。 Enumeratable Enumeratableモジュールはeachメソッドが定義されたクラスで使用可能となる。 map, collect破壊的 与えられたブロックを評価した結果の配列を返す。 ブロックを…

組み込みクラス: 正規表現編

正規表現オブジェクトをつくる コンストラクタで生成する場合、オプションを引数の2つ目に書くが、オプションを正式な書き方で書く必要があり、かなり面倒。 irb(main):007:0> r = /Hello/i => /Hello/i irb(main):008:0> r.class => Regexp irb(main):010:0…

組み込みクラス: TimeClass編

入出力は範囲が膨大な割に、扱いが非常に面倒くさそうなので、先にTimeClassと正規表現を片付けてしまう。 Timeオブジェクトの生成 new `nowがエイリアス。 irb(main):029:0> Time.now => 2019-09-21 17:12:01 +0900 irb(main):030:0> Time.now.to_s => "201…

組み込みクラス: HashClass編

今日中にIOとTimeと正規表現がノルマ... Hashの生成 ハッシュは通常の{key => value}による定義以外にも、配列のようなHash[key,value]が使える。 irb(main):001:0> a = Hash[:tokyo, "新宿",:kanagawa,"横浜",:ehime,"matsuyama"] => {:tokyo=>"新宿", :kan…

Ruby silver模擬試験誤答一覧

随時追加。 引数をフォーマットした文字列 irb(main):002:0> p "HelloWorld%d" % 5 "HelloWorld5" => "HelloWorld5" module function Kernel.#format (Ruby 2.1.0) Cのpritntfのように、引数を指定しておいて、後ろから置換する文字をしてする記法が使える。…

組み込みクラス: 配列編

配列の初期化 普段は[1,2,3]を使っているが、Array[1,2,3]やArray.new([1,2,3])で定義できる。 配列のすべての要素に初期値を設定したい場合はArray.new(10,"non")となるが、これは配列のすべての要素が同じインスタンスとなる。 irb(main):002:0> a = Array…

Ruby Silver 試験対策 Day8(StringClass編その2)

文字列の長さを求める 単なる長さだけでなく、指定されたパターンの文字数、空であるか、バイト数を返すなど、いろんな長さに応じてメソッドがある。 length 破壊的なし エイリアスはsize count 破壊的なし マッチする文字の数を返す。マッチ対象の文字を指…

Ruby Silver 試験対策 Day7(StringClass編)

特になにか面白い挙動があるという訳でもないので、ひたすらirbでお試ししてゆく。 Encodingクラス OSが指定している規定エンコーディングはEncodingクラスのクラスメソッドであるdefault_externalで取得する。 irb(main):001:0> Encoding.default_external …

Ruby Silver 試験対策 Day7

組み込みクラス編。 Basic Object, Object Encoding,String Array Hash,Symbol ファイル入出力 Time 正規表現 Enumeratable, Compsrable モジュール これぐらいが出題範囲なので、本日中にArrayまでは片づけたい。 Basic ObjectとObject Class object_id オ…

Ruby Silver 試験対策 Day6

オブジェクト指向の完結編 クラス変数 Rubyでもっとも厄介な部分。 クラス変数はインスタンスとクラス、サブクラス、サブクラスのインスタンスでどこでも共有可能な値である。アクセサを定義せずとも外部から自由に書き加えることが出来る上、継承先のクラス…

Ruby Silver 試験対策 Day5-2

長かったオブジェクト指向も間もなく終わりのはず。 クラスメソッド Classクラスに対して、引数とブロックを指定したnewメソッドを使うことで、クラスを新たに定義することが出来る。 class Ship def habor p "HAYAMA" end end Yacht = Class.new(Ship){ def…

Ruby Silver 試験対策 Day5

オブジェクト指向の続き selfの参照先 selfは自分自身を指す特別なオブジェクトで、どこで実行されるかによって振る舞いが異なる。 クラス内部で使っているならそのクラスそのものを、メソッド内部で使っているならそのメソッドを実行しているインスタンスを…

Ruby Silver 試験対策 Day4

オブジェクト指向に関する仕様。オブジェクト指向の基本原則は変わりないが、Ruby独自に使用にだけ触れてゆく。 メソッドの探索経路 継承されたクラスのメソッドは、自分のインスタンスを生成したクラスからを見てゆき、そこから親クラスを次々の遡るように…

Ruby Silver 試験対策 Day3 (ブロックとProcと例外編)

長くなるので、移設。 ブロックとProc qiita.com Rubyではメソッドに引数として渡した変数のスコープが、破壊的メソッドを使わない限りはメソッド内に限定されている、という事情があった。 この不便を解消させるのがブロックである。 ブロックはメソッドを…

Ruby Silver 試験対策 Day3

ハッシュ ハッシュを生成すると、ハッシュの中に、キーとそれが指し示すオブジェクトのポインタが保存される。ハッシュそのものにオブジェクトが内包されているわけではない。 irb(main):001:0> string = "Ruby is Fun!" => "Ruby is Fun!" irb(main):002:0>…

Ruby Silver 試験対策 Day2

同値性と同一性 irb(main):009:0> v1 = "foo" => "foo" irb(main):010:0> v2 = v1 => "foo" irb(main):011:0> v1.object_id => 70368455089300 irb(main):012:0> v2.object_id => 70368455089300 irb(main):013:0> v1 << "bar" => "foobar" irb(main):014:0>…

Ruby Silver 試験対策 Day1 (文字列編)

文字列だけが異様なほど長かったので、別の記事に。 バックスラッシュ記法 なにを言っているのかよくわからなかった。 出力メソッドの違い irb(main):016:0> p "Hello","World","!!" "Hello" "World" "!!" => ["Hello", "World", "!!"] irb(main):017:0> put…

Ruby Silver試験対策 Day1

3-1 識別子 命名規則 先頭に数字が指定できない。 アンダースコア以外の記号(ハイフンを含む)が変数名として利用できない。 変数スコープ C#のような一般的なオブジェクト指向言語と異なり、そのクラスのインスタンスであるオブジェクトすべてが共有し、書き…