Ruby初心者質問スレPart1
■ このスレッドは過去ログ倉庫に格納されています
0745デフォルトの名無しさん
NGNG使い物にならないってのは、Cのように構造体と関数があって関数に構造体を渡して云々
のやり方だとRubyの流儀に合わず、結果として使いづらくなるということを言ってるのだと思う。
折角のオブジェクト指向なのだから、構造体とそれを操作する関数群はひとつのクラスに
まとめるべきだろう。こんな感じ
class Student
def Student.new_from_str(str)
Student.new(*str.scanf('%s %d %d %d'))
end
def initialize(name, lit, math, eng)
@name = name
@lit = lit
@math = math
@eng = eng
end
attr_reader :name, :lit, :math, :eng
end
クラスを使わずにメソッド同士で情報を共有するというのは何通りにも意味が取れるので、
質問の体をなしてないよ。なので、情報を共有したいメソッドから共通したオブジェクトが
見える方法は何か? と問題を変形してみる。そうすると、
ひとつにはグローバル変数を使うやり方がある(が、あまり推奨できない)。
もう一つは共通の情報を保持したオブジェクトをやり取りする方法があって
Rubyの場合はこっちでやるのが普通。何らかの変数にオブジェクトを代入しておいて、
各メソッドにその変数(で指されるオブジェクト)を引数で渡すというやりかたね。
以上はクラスを使わないやり方。で、メソッド間で情報を共有する場合、
クラスを作ってインスタンス変数に入れちゃうというのがもう一つのやり方。
あとプログラムをはじめて一週間程度であればどれかひとつの言語に的を絞って勉強した方がいいと思うよ。
CとRubyでは変数の考え方からしてまるで違うからひどく混乱すると思う。
■ このスレッドは過去ログ倉庫に格納されています