タグ

関連タグで絞り込む (0)

  • 関連タグはありません

タグの絞り込みを解除

rubyとgoldに関するrochefortのブックマーク (10)

  • RubyのDateTimeの差分 - rochefort's blog

    合格済みですが、メモしておきます。 gold対策(模擬試験16)。 DateTimeの演算結果のclassを問う問題です。 require 'Date' d1 = DateTime.new d2 = DateTime.new d3 = d2 - d1 # => (0/1) d3.class # => Rational なんとRationalです。 分かりやすいようにDateTime#nowでやると下記のようになります。 d1 = DateTime.now d2 = DateTime.now d3 = d2 - d1 # => (7/43200000000) d3.class # => Rational Dateも同様です。 d1 = Date.new d2 = Date.new d3 = d2 - d1 # => (0/1) d3.class # => Rational ついでに、Time

    RubyのDateTimeの差分 - rochefort's blog
  • rubyの「class内のself」と「method内のself」 - rochefort's blog

    gold対策(模擬試験15)。 「class内のself」と「method内のself」を問う問題です。 通常class内はclassが、selfはインスタンスが返りますが ちょっと引っかけっぽいです。 class A $a = self def hoge $b = self end end $a # => A $b # => nil # !> global variable `$b' not initialized これ、$bはnilなんですね。 まだ評価されていないので。 A.new.hoge $b # => #<A:0x007fd5238400d0> とするとインスタンスが返ります。

    rubyの「class内のself」と「method内のself」 - rochefort's blog
  • rubyのException - rochefort's blog

    gold対策。 rubyのクラスを階層構造で表示 - rochefort's blog 簡単に解説すると、Treeってクラスに Module.constantsで取得したクラス毎に そのクラスと親のクラスを保有するTreeNodeDataクラスのインスタンスとして突っ込んで行って to_sで階層化して出力するスクリプトです。 (あんまりきれいではない) このスクリプトの実行部分を下記のようにすると Exception以下のクラス一覧が取り出せます。 tree = Tree.new Module.constants.each do |elm| const = eval(elm.to_s) if const.respond_to?(:superclass) && const.ancestors.include?(Exception) if const == Exception tree <<

    rubyのException - rochefort's blog
  • ruby aliasの使い方 - rochefort's blog

    gold対策(模擬試験12)。 この手の問題も間違った気がする。 alias式 aliasは式なので、識別子、symbolが利用できます。 下記出力となるようにaliasの内容を回答させる問題。 メソッド名が引っ掛けですが、先に指定するのが新しいメソッド名です。 Hello, World Hello, Ruby World 識別子指定の場合。 def method puts 'Hello, World' end alias old_method method def method old_method puts 'Hello, Ruby World' end method Symbol指定の場合。 def method puts 'Hello, World' end alias :old_method :method def method old_method puts 'Hello, R

    ruby aliasの使い方 - rochefort's blog
  • rubyのundefについて - rochefort's blog

    gold対策。(基礎力確認問題12) インスタンスメソッドfooをundefしているので、エラーになります。 module Mod def foo puts 'Mod' end end class Cls1 def foo puts 'Cls1' end end class Cls2 < Cls1 include Mod undef foo end Cls2.foo # => # ~> -:17:in `<main>': undefined method `foo' for Cls2:Class (NoMethodError) これは通常の動きなのですが、クラスメソッドをundefする場合はどう書くのだろう? と思ったのでやってみます。 クラスメソッドをundefする ダメなやりかた クラスやselfを指定する方法はNGです。 class C def self.foo; puts 'foo

    rubyのundefについて - rochefort's blog
    rochefort
    rochefort 2013/05/21
    ブログかいた
  • rubyのインスタンスメソッドとクラスメソッド - rochefort's blog

    gold対策。(基礎力確認問題11) class Cls1 def Cls1.foo puts 'Cls1' end end class Cls2 < Cls1 def foo puts 'Cls2' end end Cls2.foo # >> 'Cls1' Cls2.new.foo # >> Cls2 これ自体は、とてもシンプルですが gold受験だけでなくruby書く上でも 以下のことを理解しておいた方が良いんじゃないかという気がしてきたので 自分の頭の整理のつもりで書いてみます。 includeでクラスメソッドを追加するには? moduleにクラスメソッドを記述してclassでincludeしてみる こんな風に書いてみて、うまくいかない経験は結構あるかと思います。 module M def self.foo puts "M" end end class Cls1 include M

    rubyのインスタンスメソッドとクラスメソッド - rochefort's blog
  • rubyのblockの評価 - rochefort's blog

    gold対策。(基礎力確認問題6) <p>Hello World.</p> と出力させるメソッド定義を選択させる問題が出題されました。 (多分正解したはず。) yieldで出力させる方法と、Procオブジェクトとして扱う方法があります。 def tag t print "<#{t}>#{yield}</#{t}>" end tag(:p){ 'Hello World.' } def tag(t, &block) print "<#{t}>#{block.call}</#{t}>" end tag(:p){ 'Hello World.' }

    rubyのblockの評価 - rochefort's blog
  • rubyのメソッド内で定数は定義できない - rochefort's blog

    gold対策。 class C def foo CONST = 'aaa' end end # ~> -:3: dynamic constant assignment # ~> CONST = 'aaa' # ~> これは単純に知らなかったのですが、メソッド内で定数は定義できません。 (基礎力確認問題5)こっちはエラー内容は同じですが メソッド内にて定数を変更しようとしているところでエラーとなっています。 (コメントもらって、subjectに合わせて内容修正しました。thanks) $ cat -n k05.rb 1 #!/usr/bin/env ruby -w 2 class C 3 VAR = 0 4 def VAR= v 5 VAR= v 6 end 7 def VAR 8 VAR 9 end 10 end 11 12 c = C.new 13 c.VAR = 3 14 puts c

    rubyのメソッド内で定数は定義できない - rochefort's blog
  • rubyの配列展開について - rochefort's blog

    gold対策(基礎力確認問題2)。 通常の配列展開 はこんな感じ。 p で警告はでますが出力はされます。 a = [0, 1, 2] p a p *a # !> `*' interpreted as argument prefix # >> 0 # >> 1 # >> 2 *付き変数に突っ込む 実コードでは、あんまりやらないとは思いますが 試験でもこれっぽいのが出て間違えてしまった気がします。 x, *y = *[0, 1, 2] p x # => 0 p y # => [1, 2] x, *y = [0, 1, 2] p x # => 0 p y # => [1, 2] ここで右辺の*はなくても一緒。 どうでもいいですが、ここら辺は重箱の隅というか引っかけという感があります。 変数と配列の要素数が異なる場合 x, y = [0, 1, 2] p x # => 0 p y # => 1 a

    rubyの配列展開について - rochefort's blog
    rochefort
    rochefort 2013/05/19
    ブログかいた // 配列展開:*付き変数に突っ込む
  • Ryby技術者認定試験Goldに落ちました - rochefort's blog

    66/100 という酷い結果でした。 Ruby公式資格教科書 Ruby技術者認定試験 Silver/Gold対応 (EXPERT EXPASS) 作者: 増井雄一郎,小川伸一郎,(株)日立ソリューションズ藁谷修一,川尻剛,牧俊男,Rubyアソシエーション,CTCテクノロジー(株)監修出版社/メーカー: 技術評論社発売日: 2012/02/22メディア: 単行(ソフトカバー)購入: 5人 クリック: 204回この商品を含むブログ (9件) を見る を1年ぐらい前に購入して、ほったらかしにしていたのですが 最近少し時間が出来たのでざっと1回目を通して、 メタプログラミングRubyを数日掛けて再読してから受験しました。 まぁ受かるだろうと思ってたので悔しいなぁ。 引っかけっぽい問題もあるんだけど、ちゃんとclass/moduleの関係やrubyの細かいところの 理解が足りないってのが実感できま

    Ryby技術者認定試験Goldに落ちました - rochefort's blog
  • 1