タグ

ブックマーク / yarb.hatenadiary.org (5)

  • RubyのStructのイディオムとアンドキュメンテッドな機能 - yarbの日記

    改めてStruct関連のイディオムについて調べた。Ruby標準のStructクラスを使えばコンストラクタでの面倒な初期化を飛ばせる。以下のクラスBとクラスCは、ほぼ同じ機能を実現する。 class B attr_accessor :var1, :var2 def initialize(var1, var2) @var1, @var2 = var1, var2 end end B.new("bar", 5) => #<B:0x007fae7a93ddb8 @var1="bar", @var2=5> class C < Struct.new(:var1, :var2) end C.new("foo", 3) => #<struct C var1="foo", var2=3> Structを使うとインスタンス変数が生成されるわけではないけど、アクセッサ経由で読み書きできるというインターフェイスは

    RubyのStructのイディオムとアンドキュメンテッドな機能 - yarbの日記
    xef
    xef 2013/01/04
  • しつこく Hub を読む - yarbの日記

    しつこく「Hub」を眺めている。語学学習に精読と多読の2つのアプローチがあるように、コードリーディングにも精読というのがあるはずで、試しにそれをやってみている。モヤッする「分かってない感」を感じたら、基的に分かるまで調べるのが精読。そのためには、ブログエントリとして分かったことを書き出すのは良い方法のような気がしたのでやってみている。ほとんど誰も読んでないブログだとはいえ、アウトプットの形にするのは手間だし、何だか気分的には常に挫けそうなんだけど、「なんとなく分かった気になる」という厄介な悪癖を変えるには十分に時間に見合うと思う。 で、やってみて分かったけど、RubyのこともRubyのイディオムのことも、まるで分かってないということが良く分かった。「コードを読む」ということが何かも分かってなかったなと思った。なんとなく眺めてちゃ駄目だな。まず精読。そのうち多読ができればいいなと思っている

    しつこく Hub を読む - yarbの日記
    xef
    xef 2012/12/27
  • git/GitHubを便利に使うHubを少し読む(2) - yarbの日記

    git/GitHubを便利に使うRuby製ツールのコマンドラインツール「Hub」のソースコードを少し読んだので、あれこれメモ。git/GitHubを便利に使うHubを少し読むの続き。 GitHubAPIをラップする lib/hub/github_api.rb は、クラス定義っぽいところを抜き出すと以下のような感じ。 module Hub class GitHubAPI module Exceptions module HttpMethods module ResponseMethods module OAuth include HttpMethods include OAuth class FileStore class Configuration FileStoreは設定をファイルに落としたり、ロードしたりするモジュールで、Configurationは設定を扱うクラス。この2つは別ファ

    git/GitHubを便利に使うHubを少し読む(2) - yarbの日記
    xef
    xef 2012/12/09
  • git/GitHubを便利に使うHubを少し読む - yarbの日記

    git/GitHubを便利に使うRuby製ツールのコマンドラインツール「Hub」のソースコードを少し読んだ。コメントが非常に丁寧だし、小さなツールなので、全体を把握しやすい。いろいろ勉強になる。あれこれランダムにメモしてみる。 featuresの下にあるcucumberのテストケースがあまりにも英文でビビった。CLIツールでもうまく書けば、このぐらい分かりやすいテストが書けるのか。例えば、features/clone.feature にある例は、 Feature: hub clone Scenario: Clone a public repo When I successfully run `hub clone rtomayko/ronn` Then it should clone "git://github.com/rtomayko/ronn.git" And there should

    git/GitHubを便利に使うHubを少し読む - yarbの日記
    xef
    xef 2012/12/09
  • じゃんけんごときにクラスなんて要るのか - yarbの日記

    CodeIQというプログラミング課題に挑戦するサイトに、Rubyでジャンケンクラスを作れという問題があったのでやってみた。すでに問題は読めなくなっているけど、こんな感じのJankenクラスを作れという。 $ irb > require './janken.rb' > left = Janken.new > right = Janken.new > left.versus(right) 左の人が勝ました。右「チョキ」左「グー」 > left.versus(right) 右の人が勝ちました。右「チョキ」左「パー」 : :繰り返しirbで実行できるように、とある。 問題を見た瞬間、これは問題自体がおかしいのではないかと思ったけど、やってみた。 # -*- coding: utf-8 -*- class Janken attr_reader :hand NAME = { goo: "グー", ch

    じゃんけんごときにクラスなんて要るのか - yarbの日記
    xef
    xef 2012/12/03
  • 1