irb(main):016:0> load("./sphere.rb")
=> true
irb(main):017:0> show(sphere(20))
NoMethodError: undefined method `show' for main:Object
from (irb):17
from ./sphere.rb:15
と表示されます…エラーの意味が分からず…授業終了間際だったのでTAには聞けませんでした(汗)
で、モヤモヤしているといけないので、さっそく回答しますが、これはですね、irbで実装 しているからなんです。
showが使えるのは、isrbなので、ターミナルから、isrbを起動していたら、できていたと思 います。
次回の授業までに試してみて、もし、それでもうまくいかなかったら、掲示板でも、授業の 前後でも、聞いてください!
irb(main):004:0> b=Float::INFINITY => Infinity irb(main):005:0> b => Infinity irb(main):006:0> 10000 < b => true irb(main):007:0> 10000 > b => falseこの問題ではそこまで想定していないので,「解が無数にある時は -1 を返す」などと決めた上で-1を返すプログラムなどで良いと思います.
個人的には、インデントを作り、#を使ってコメントアウトをした記録を残すことで、振り 返って作業のしやすいプログラムを書く礎であると思うのですが・・・いかがでしょう か・・・
if 条件1
式1
else
if 条件2
式2
else
if 条件3
式3
else
式4
end
end
end
のようにelse部分にif文が来る多方向分岐を
if 条件1 式1 elsif 条件2 式2 elsif 条件3 式3 else 式4 endのように書くことができます.詳しくは,Ruby 1.8.7 リファレンスマニュアル制御構造を御覧ください.また,「elsif」のスペル に注意して下さい.
講義で扱わなかったのは,
@file = Tempfile.new("plotdata"+name, "/tmp")
を
@file = Tempfile.new("plotdata"+name)
に変更すれば動くはずです.私の手元の環境では動きました.これはバグなので報告しておきます.
if x=yのように,等しいかどうかの比較で「==」を用いずに「=」を使って変数の代入とみなされてしまう誤り,逆にb(s,x,y)の定義で
r==s/2のように,代入なのに「=」を用いずに「==」を使ってる誤りが多かった.
ruby vote.rb 選択肢番号のように使います.