練習問題は以下のとおりです。Ruby OOPの正しいコンセプトは?
#Create a Tree class with a rings attribute and getter method.
#Trees create a ring for every winter that passes
#It should have a bear_fruit? method which should return true if the
#has fruit that year. the tree produces fruit when it has
#more than 7 rings but less than 15, but false otherwise.
#The class should also have an winter_season method that increases #rings attr by 1.
誰でもこのコードを建設的に批判することはできますか?
class Tree
attr_accessor :winters, :rings, :bear_fruit?
def initialize(winters, rings)
@winters = winters
@rings = rings
end
def rings_created
@winters = 0
@rings = 0
while @winters == @rings do
@winters +=1
@rings +=1
break if @winters == 100
end
end
end
def bear_fruit
if @rings > 6 || < 16
@bear_fruit? = true
else
@bear_fruit? = false
end
end
def winter_season
@winters = 0
@rings = 0
while @winters < @rings do
@winters +=1
@rings +=2
break if @winters == 100
end
end
end
end
'レール= Ruby' –
タイプミス、それはあなたが@bear_fruit'のようなインスタンス変数を作ることができない私は午前2時.. – whatabout11
あります '?。メソッド名のように '? 'を使うことはできません。ここにあなたの圧痕があります。何が起きているのかを明確に把握し、間違いを特定するには、組織的で整然としたコードを作成することが重要です。これらの問題を解決する最善の方法を覚えているのは、あなたのコードが何をすべきかを表現する単純な単体テストを開発し、元に戻ってコードを適切に動作させることです。これは[テスト駆動開発](https://en.wikipedia.org/wiki/Test-driven_development)またはTDDの原則です。 – tadman