こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

【ruby】 『クラスの生成に失敗』を表現したい

『クラスの生成に失敗』を表現したいのです。

newの戻り値にnilやfalseを返せばよいと考え、
以下の様に書いてみました。(行頭は全角スペースです。)
class Hoge
 def initialize(arg)
  return arg
 end
end
h = Hoge.new(false)
STDERR.puts 'err' unless(h)

errはputsされませんでした。(グーグルで調べるとinitializeのreturnは、返ってこないそうでした。)

そこで以下の様に書きました。(行頭は全角スペースです。)

class Hoge
 attr_reader :stat
 def initialize(arg)
  @stat = arg
 end
end
h = Hoge.new(false)
STDERR.puts 'err' unless(h.stat)

なんか、ものすごく我流になってる気がします。。。

アドバイスをお願いいたします。

投稿日時 - 2009-03-17 00:15:59

QNo.4803045

暇なときに回答ください

質問者が選んだベストアンサー

「クラスの生成」とは何だろうと思ったら、オブジェクトの生成ですね。
「失敗」というのはそのプログラムの文脈の中でどういう意味なのかを考えて、例外を投げるか、お書きのようにするのかどちらかでしょう。どちらが良いのかは、ケースバイケースだと思います。

>なんか、ものすごく我流になってる気がします。。。
unlessのオペランドにカッコをつけるのは我流で筋が悪いと思います。
if / unless / case / while / return 。。。 も同じ。

投稿日時 - 2009-03-17 22:08:45

お礼

notnotさん ご回答ありがとうございます。

オブジェクトの生成って言い方が適切なんですね。間違いました。

例外を投げるって方法があるんですね。
beginとrescueですか。これで、newの返り値にnilやFalseが返せるか
調べてみます。

オペラントの()についてのご指摘もありがとうございました。

投稿日時 - 2009-03-20 15:49:37

ANo.1

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(1)