Ruby超入門 2周目 CHAPTER8-4 オブジェクトに データを持たせる まで
『ゼロからわかる Ruby 超入門 (かんたんIT基礎講座) 』
github.com
こんばんは。季節の変わり目で色々とストレスがたまりますね。koujiです。プログラミングは頑張るぞー!!って感じよりも楽しんでやってるのでストレス発散ですね。このブログも同じですね。
ってことで今日もCHAPTER8を振り返っていきまーす!
インスタンス変数
お気づきだろうか… 一杯のかけそばを表現してみました… それは置いておいて。orderメソッドの中でitemを@nameに代入してて、この@付きの変数がインスタンス変数ってやつだね。@nameじゃなくて、nameにするとどうなっちゃうかっていうと、スコープ範囲の関係で、定義したメソッドの中では見えるんだけど、外からだと見えなくなっちゃう。そこで@変数名のインスタンス変数の登場ですよ!インスタンス変数は同じオブジェクトの中であればメソッドをまたいで使えちゃう便利な変数だねぇ。で、同じオブジェクトであればって書くと、ややこしくなってしまうかもだけど、buckwheat1 = Onebuckwheat.newこれが1つのオブジェクトってことね。で、例えばbuckwheat2 = Onebuckwheat.newがあるとすると、1と2は別のオブジェクトになるってことね。
こういうことね。1と2は別のインスタンス(オブジェクト)ってことだねー。
インスタンス変数を取得するメソッドをつくる
オブジェクトの外でインスタンス変数を取得したくなったらどうすれば良いかって感じなんだけど、上に書いてあるようにnameメソッドを作ってあげればいいんだねぇ。nameメソッドの中身は@nameね。このnameメソッドを定義してあげるだけど、上みたいな感じで.nameでインスタンス変数を取得できちゃいまっす!便利!
インスタンス変数へ代入するメソッドをつくる
これもそんなに難しくなくて、インスタンス変数に代入するメソッドを定義してるだけだね。書き方が少し変わっててdef name=(引数)って感じ。慣習的な書き方らしいんだけど、慣習に従うとメリットがあるので素直にしたがっておこう。で、インスタンス変数に代入して、nameメソッドも書いてあるから他の場所では@nameじゃなくてnameでもいけちゃうって感じだねぇ。いやーこれは頭の体操になるっていうか面白いねぇ。
で、instanc_variablesメソッドって便利なものもある。これはオブジェクトが持ってるインスタンス変数の変数名を一覧で取得できちゃうメソッドなんだね。で、ここでも面白いなぁと思うのが、インスタンス変数は代入したときに作られるから、代入前にinstanc_variablesメソッドを書いても@nameはでてこないんだよね。
一杯のかけそばをください…
かけそば一杯はおいくらですか…?
かけそば一杯ぐらい気にせず食べてくんな!お代はまた今度でいいよ!
[:@name]
代入後にinstanc_variables書いてあげると[:@name]こんな感じで表示される。
[ ]
一杯のかけそばをください…
かけそば一杯はおいくらですか…?
かけそば一杯ぐらい気にせず食べてくんな!お代はまた今度でいいよ!
代入前にinstanc_variables書くと@nameでてこなくて[]ってなっちゃう。インスタンス変数ないねーって感じだね。こりゃー面白い。
インスタンス変数は代入後につくられるっ!!!
ってな感じで今日もRuby超入門の振り返りでした。いやーやっぱり面白いね。
ってことで今日はこの辺で〜!
アディオス!