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 格納
Ruby
-
5
ルビー言語 ライブラリー(再々渇)
Ruby
-
6
ruby loopメソッド 変数
Ruby
-
7
ruby 配列
Ruby
-
8
アセンブリ言語について。
その他(プログラミング・Web制作)
-
9
ルビー言語 ライブラリー
Ruby
-
10
プログラミング言語のバージョン確認について。
その他(プログラミング・Web制作)
-
11
ルビー言語 csvファイル part2
Ruby
-
12
ruby while式
Ruby
-
13
ruby loopメソッド 変数(再喝)
Ruby
-
14
ruby OpenURI::Meta
Ruby
-
15
Ruby require ライブラリー
Ruby
-
16
excelVBAについて。
Excel(エクセル)
-
17
excelVBAについて。
Excel(エクセル)
-
18
excelVBAについて。
Excel(エクセル)
-
19
excelVBAについて。
Excel(エクセル)
-
20
ファイルとフォルダの移動について。
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ruby OpenURI::Meta
-
Ruby require ライブラリー
-
Accessで文字列のバイト数読み込み
-
VBScriptでExcel(2019)上のデー...
-
(再質問)エクセルのマクロボ...
-
英数字を含む文字列(0-9,A-Z)...
-
C言語の入力した文字を反転させ...
-
【メモリ不足で落ちる(python)】
-
WSLのUbuntuで、Railsのインス...
-
ruby while式
-
ruby loopメソッド 変数(再喝)
-
ruby 配列
-
ruby loopメソッド 変数
-
ruby クラス・オブジェクト・イ...
-
ルビー言語 ライブラリー 追記
-
ruby raise句
-
ruby begin句
-
ruby ensure句
-
ルビー言語 ライブラリー(再々...
-
ルビー言語 csvファイル 続き(...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Ruby require ライブラリー
-
ruby loopメソッド 変数(再喝)
-
(再質問)エクセルのマクロボ...
-
ruby OpenURI::Meta
-
ruby while式
-
ruby loopメソッド 変数
-
1、Rstudioで回帰直線を求める...
-
パソコンのスクリーンセーバー...
-
ビーリアルのユーザー名を変え...
-
ruby 配列
-
C言語の入力した文字を反転させ...
-
ruby クラス・オブジェクト・イ...
-
ルビー言語 ライブラリー 追記
-
100万件越えCSVから条件を満た...
-
ルビー言語 csvファイル 続き
-
Ruby newメソッド
-
教えてください
-
ruby raise句
-
英数字を含む文字列(0-9,A-Z)...
-
pythonエラー
おすすめ情報