0

そこで、Ruby の RSPEC テストにパスするコードを書き込もうとしています。しかし、最初のテストに合格するのに苦労しています。これを少しでも手伝ってくれれば、残りは手に入れることができると思います。しかし、アドバイスを提供しやすくするために、残りのテストを投稿できます。

したがって、華氏/摂氏変換器を構築していますが、変換を行うためのいくつかのメソッドを定義するだけでなく、オブジェクトとクラスを使用しています。

前半はこんな感じ

   require "temperature"

describe Temperature do

  describe "can be constructed with an options hash" do
    describe "in degrees fahrenheit" do
      it "at 50 degrees" do
        Temperature.new(:f => 50).in_fahrenheit.should == 50
      end

手順のヒントの 1 つは、Temperature オブジェクト コンストラクターが :celsius または :fahrenheit エントリのオプション ハッシュを受け入れる必要があることを示しています。

どんな助けやヒントも大歓迎です。私はここ数週間、このテストで立ち往生しています。前もって感謝します。

4

1 に答える 1

1

あなたの温度クラスにはいくつかの作業が必要だと思います。温度オブジェクトの基本値を設定できる「スケール」属性を持たないのはなぜですか?

あなたが投稿したものの修正版は次のとおりです。

class Temperature
  attr_accessor :value, :scale
  def initialize(value, options={})
    @value = value
    if options.has_key?(:scale)
      @scale = options[:scale]
    else
      @scale = :c
    end
  end
  def in_fahrenheit()
    if @scale == :c
      ( @value * 9.0/5.0 ) + 32.0 
    else
      @value
    end
  end 
end

#in_fahrenheit を呼び出すときに、新しい温度オブジェクトを作成する必要はありません。現在のオブジェクトに数値 (属性に格納されている) を華氏に変換させることができます。オブジェクトを作成するときに温度情報を追加できます。

t1=Temperature.new(68, :scale =>:f)
t2=Temperature.new(0)

2.0.0dev :199 > t1.in_fahrenheit  => 68 
2.0.0dev :200 > t2.in_fahrenheit  => 32.0 
于 2013-03-01T16:58:36.050 に答える