No.2ベストアンサー
- 回答日時:
No1です。
誤記がありました。誤:
p1.say()とp1.say()は、@@shameiに"???"が設定されているので
正:
p1.say()とp2.say()は、@@shameiに"???"が設定されているので
誤:
p1.say()とp1.say()は、@@shameiに"SONY"が設定されているので
正:
p1.say()とp2.say()は、@@shameiに"SONY"が設定されているので
以上、訂正いたします。
No.1
- 回答日時:
インスタンス変数は、変数名の先頭に@がつくものです。
後述しますが、@name,@ageの変数が該当します。
これは、インスタンス毎に、別々の値を保持することができます。
クラス変数は、変数名の先頭に@@がつくものです。
後述しますが、@@shameiの変数が該当します。
この変数は、そのクラスから作成したインスタンスであれば、どのインスタンスであっても
同じ値が設定されます。また、あるインスタンスで、クラス変数の値を変えると、
全てのインスタンスのクラス変数の値が同じ値で変わります。
後述で p1.set_shamei("SONY")を行うと、
p1の@@shameiが"SONY"になりますが、p2の@@shameiも"SONY"になります。
インスタンス変数の用途は、インスタンス毎に別々の値を持ちたいときに使用します。
例えば、ある会社の会社員のクラスを作るとき、
名前と年齢は、社員ごとに異なるので、インスタンス変数にします。
クラス変数の用途は、そのクラス内で共通した値を持ちたいときに使用します。
例えば、ある会社の会社員のクラスを作るとき、
会社名は、全ての社員で同じなので、クラス変数にします。
以下、サンプルです。
--------------------------------------------------------
class Foo
@@shamei = "???"
def initialize(name,age)
@name = name #名前
@age = age #年齢
end
def set_shamei(shamei)
@@shamei = shamei
end
def say()
puts("My company name is " + @@shamei)
puts("My name is " + @name)
puts("I am " + @age.to_s + "years old")
end
end
p1 = Foo.new("yamada",18)
p2 = Foo.new("satou",20)
p1.say()
p2.say()
p1.set_shamei("SONY")
p1.say()
p2.say()
--------------------------------------------------------
上記を実行すると、
My company name is ???
My name is yamada
I am 18years old
My company name is ???
My name is satou
I am 20years old
My company name is SONY
My name is yamada
I am 18years old
My company name is SONY
My name is satou
I am 20years old
となります。
p1.set_shamei("SONY")の前の行の
p1.say()とp1.say()は、@@shameiに"???"が設定されているので
My company name is ???
となります。
p1.set_shamei("SONY")の後の行の
p1.say()とp1.say()は、@@shameiに"SONY"が設定されているので
My company name is SONY
となります。
実際に、実行して確認してください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
Ruby newメソッド
Ruby
-
HTML &CSSとHTML5&CSS3 違い
HTML・CSS
-
ruby 配列
Ruby
-
-
4
ルビー言語 ライブラリー(再々渇)
Ruby
-
5
Ruby 引数
Ruby
-
6
Ruby 格納
Ruby
-
7
ruby loopメソッド 変数
Ruby
-
8
ルビー言語 ライブラリー
Ruby
-
9
ruby while式
Ruby
-
10
ルビー言語 csvファイル part2
Ruby
-
11
プログラミング言語のバージョン確認について。
その他(プログラミング・Web制作)
-
12
Ruby require ライブラリー
Ruby
-
13
ruby loopメソッド 変数(再喝)
Ruby
-
14
ruby OpenURI::Meta
Ruby
-
15
HTML&CSSとHTML5&CSS3の違いについて。
HTML・CSS
-
16
HTML&CSS メディアクエリについて。
HTML・CSS
-
17
プログラマー達は何故、プログラムを入れるフォルダーに容量制限があるのを知らない?
C言語・C++・C#
-
18
実務の処理について。
Excel(エクセル)
-
19
HTML&CSSとHTML5&CSS3の違いについて。
HTML・CSS
-
20
ruby クラス・オブジェクト・インスタンス
Ruby
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
(再質問)エクセルのマクロボ...
-
CSSのhtmlへの紐付けについ...
-
Ruby 変数 用途と違い
-
Ruby newメソッド
-
a=2, b=1のとき”x=(a-b+3)%3”の...
-
Ruby require ライブラリー
-
ruby OpenURI::Meta
-
ruby while式
-
ruby loopメソッド 変数(再喝)
-
ruby 配列
-
ruby loopメソッド 変数
-
ruby クラス・オブジェクト・イ...
-
ルビー言語 ライブラリー 追記
-
ruby raise句
-
ruby begin句
-
ruby ensure句
-
ルビー言語 ライブラリー(再々...
-
ルビー言語 csvファイル 続き(...
-
ルビー言語 csvファイル 続き
-
ルビー言語 ライブラリー
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
1、Rstudioで回帰直線を求める...
-
CSSのhtmlへの紐付けについ...
-
(再質問)エクセルのマクロボ...
-
パソコンのスクリーンセーバー...
-
教えてください
-
ビーリアルのユーザー名を変え...
-
ruby while式
-
ruby loopメソッド 変数
-
英数字を含む文字列(0-9,A-Z)...
-
Ruby newメソッド
-
100万件越えCSVから条件を満た...
-
C言語の入力した文字を反転させ...
-
pandasでsqlite3にテーブル作成...
-
ruby loopメソッド 変数(再喝)
-
ルビー言語 ライブラリー 追記
-
ruby raise句
-
Beautiful Soupのインストール...
-
<python>ノイズを時間指定して...
-
Ruby require ライブラリー
-
あせんうぶり言語
おすすめ情報