SlideShare a Scribd company logo
1 of 13
クラスのインスタンス変数について 2011/1/8 cuzic
自己紹介 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Ruby  の変数の種類と、インスタンス変数 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],class A    def initialize @value = “” end def get return @value end end a = A.new b = A.new p a.get.object_id p b.get.object_id (参考) クラス変数との違い 同一クラスのインスタンスメソッド、クラスメソッド、クラス定義内 は  クラス変数名が同一であれば同一のオブジェクトを参照 している。
クラスのインスタンス変数とは ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],class A    @value = Object.new def self.value   return @value   end    def self.set   @value2 = 2   end def self.value2   @value2   end end v  = A.value A.set v2 = A.value2
クラスのインタンス変数の特徴 ,[object Object],[object Object],[object Object],[object Object],[object Object],class A   @value = [] def self.value   return @value   end def instance_method   return @value   end end class B<A   p @value #=> nil end p A.value  #=> [] p B.value  #=> nil p A.new.instance_method   #=> nil (参考) クラス変数との違い クラス変数であれば、サブクラスやインスタンス メソッドから参照できる。
クラスのインスタンス変数の長所 class Base   def self.civar= val   @civar = val   end def self.civar   @civar   end def civar= val   self.class.civar = val   end def civar   self.class.civar   end end クラスメソッドを定義することで、 サブクラスで参照可能になる インスタンスメソッドを定義することで、 インスタンスメソッド内で参照可能になる ,[object Object]
継承があった場合 class Base   def self.civar= val   @civar = val   end def self.civar   @civar   end end class Subclass < Base end Base.civar = 1 p Subclass.civar #=> nil Subclass.civar = 2 p Base.civar #=> 1 この行で  1  と表示させたいときは、 後述の  class_attribute  を利用する ① :  Subclass.civar  の呼び出し ② : 存在しないので、 Base.civar   の呼び出し ③ : インスタンス変数  @civar  の  値を返す。このとき  self  は   Subclass  のため   @civar  は未定義 サブクラスはスーパークラスと異なるオブジェクトのため、 同じ名前のインスタンス変数でも異なるオブジェクトを参照する
(参考) クラス変数の参照性 ,[object Object],[object Object],サブクラスから参照可能 インスタンスメソッドから参照可能 サブクラスでの変更がグローバルに影響が及ぶ クラスの インスタンス変数 × (アクセサメソッドが必要) × (アクセサメソッドが必要) × (そもそも参照不可) クラス変数 ○ ○ ○ ActiveSupport  の class_attribute (後述) ○ (アクセサメソッド) ○ (アクセサメソッド) (オプションで設定可能) × (破壊的変更を 行った場合を除く) (参考) 定数 ○ ○ × (サブクラスでの定数 への代入文は新定数の定義となる)
クラスのインスタンス変数の使用例 ,[object Object],[object Object],[object Object],[object Object],class Foo   extend Exception2MessageMapper   def_e2message ExsitingExceptionClass,   “message …”   def_exception :NewExceptionClass,    “message …” end Foo.Fail NewExceptionClass, arg … Foo.Fail ExistingExceptionClass, arg …
スーパークラスの値をデフォルト値にしたい! ,[object Object],require “rubygems” require “active_support/core_ext/class” class Base   class_attribute :setting end class Subclass < Base end Base.setting = true p Subclass.setting  #=> true Subclass.setting = false  p Subclass.setting  #=> false P Base.setting  #=> true class Base   def self.setting= val   class << self   self   end.class_eval do   define_method :setting do    val   end   end   end end class_eval
class_attribute  を利用した例(1) ,[object Object],[object Object],[object Object],[object Object],[object Object],class ApplicationController < ActionController::Base # include ActiveSupport::Rescuable #  すでに  include  している rescue_from ActiveRecord::RecordInvalid do |exception|   render :action => (exception.record.new_record? ? :new : :edit)   end end
class_attribute  を利用した例(2) ,[object Object],[object Object],[object Object],[object Object],クラス内で共通だが、継承ツリー全体での共有はしたくない 設定はクラスのインスタンス変数を用いるとうまく実装できる コールバック タイミング after_create 新規作成し、保存したあと after_destroy 削除したあと after_save 新規作成、更新したあと after_update 更新したあと after_validation バリデーションしたあと before_create 新規作成する前 before_destroy 削除する前 before_save 新規作成、更新する前 before_update 更新する前 before_validation バリデーションする前
まとめ ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]

More Related Content

What's hot

WebAssembly向け多倍長演算の実装
WebAssembly向け多倍長演算の実装WebAssembly向け多倍長演算の実装
WebAssembly向け多倍長演算の実装MITSUNARI Shigeo
 
AtCoder Beginner Contest 035 解説
AtCoder Beginner Contest 035 解説AtCoder Beginner Contest 035 解説
AtCoder Beginner Contest 035 解説AtCoder Inc.
 
OKRワークショップ - vol1.OKRとは
OKRワークショップ - vol1.OKRとはOKRワークショップ - vol1.OKRとは
OKRワークショップ - vol1.OKRとはOKRJapan
 
その文字列検索、std::string::findだけで大丈夫ですか?【Sapporo.cpp 第8回勉強会(2014.12.27)】
その文字列検索、std::string::findだけで大丈夫ですか?【Sapporo.cpp 第8回勉強会(2014.12.27)】その文字列検索、std::string::findだけで大丈夫ですか?【Sapporo.cpp 第8回勉強会(2014.12.27)】
その文字列検索、std::string::findだけで大丈夫ですか?【Sapporo.cpp 第8回勉強会(2014.12.27)】Hiro H.
 
大規模Perl初心者研修を支える技術
大規模Perl初心者研修を支える技術大規模Perl初心者研修を支える技術
大規模Perl初心者研修を支える技術Daisuke Tamada
 
MariaDB migration from commercial database
MariaDB migration from commercial databaseMariaDB migration from commercial database
MariaDB migration from commercial databaseGOTO Satoru
 
何をどう学ぶか?
何をどう学ぶか?何をどう学ぶか?
何をどう学ぶか?nishio
 
ハードテック スタートアップのトレンド (2016 年版)
ハードテック スタートアップのトレンド (2016 年版)ハードテック スタートアップのトレンド (2016 年版)
ハードテック スタートアップのトレンド (2016 年版)Takaaki Umada
 
VLDB2015 会議報告
VLDB2015 会議報告VLDB2015 会議報告
VLDB2015 会議報告Yuto Hayamizu
 
高解像度スタートアップガイド Part1(Part2/3へ続く)
高解像度スタートアップガイド Part1(Part2/3へ続く)高解像度スタートアップガイド Part1(Part2/3へ続く)
高解像度スタートアップガイド Part1(Part2/3へ続く)Takahiro Yamaguchi
 
振り返り(アジャイルレトロスペクティブズ)
振り返り(アジャイルレトロスペクティブズ)振り返り(アジャイルレトロスペクティブズ)
振り返り(アジャイルレトロスペクティブズ)Keisuke Tameyasu
 
AtCoder167Dをダブリングで解く
AtCoder167Dをダブリングで解くAtCoder167Dをダブリングで解く
AtCoder167Dをダブリングで解くAkira KANAI
 
C++と仲良くなるためのn問 ~ポインタ編~ #ladiescpp
C++と仲良くなるためのn問 ~ポインタ編~ #ladiescppC++と仲良くなるためのn問 ~ポインタ編~ #ladiescpp
C++と仲良くなるためのn問 ~ポインタ編~ #ladiescppcocodrips
 
高解像度スタートアップガイド Part2(Part3へ続く)
高解像度スタートアップガイド Part2(Part3へ続く)高解像度スタートアップガイド Part2(Part3へ続く)
高解像度スタートアップガイド Part2(Part3へ続く)Takahiro Yamaguchi
 
Linux の hugepage の開発動向
Linux の hugepage の開発動向Linux の hugepage の開発動向
Linux の hugepage の開発動向Naoya Horiguchi
 
量子コンピューター向け冷凍機について
量子コンピューター向け冷凍機について量子コンピューター向け冷凍機について
量子コンピューター向け冷凍機についてTakayoshi Tanaka
 
【商模五式】商業模式 營銷方案設計(2021數位轉型即戰力線上工作坊)—20210701
【商模五式】商業模式營銷方案設計(2021數位轉型即戰力線上工作坊)—20210701【商模五式】商業模式營銷方案設計(2021數位轉型即戰力線上工作坊)—20210701
【商模五式】商業模式 營銷方案設計(2021數位轉型即戰力線上工作坊)—20210701張大明 Ta-Ming Chang
 
畢業旅行規劃說明
畢業旅行規劃說明畢業旅行規劃說明
畢業旅行規劃說明Jou Chen
 
OpenTelemetryを用いたObservability基礎の実装 with AWS Distro for OpenTelemetry(Kuberne...
OpenTelemetryを用いたObservability基礎の実装 with AWS Distro for OpenTelemetry(Kuberne...OpenTelemetryを用いたObservability基礎の実装 with AWS Distro for OpenTelemetry(Kuberne...
OpenTelemetryを用いたObservability基礎の実装 with AWS Distro for OpenTelemetry(Kuberne...NTT DATA Technology & Innovation
 

What's hot (20)

WebAssembly向け多倍長演算の実装
WebAssembly向け多倍長演算の実装WebAssembly向け多倍長演算の実装
WebAssembly向け多倍長演算の実装
 
AtCoder Beginner Contest 035 解説
AtCoder Beginner Contest 035 解説AtCoder Beginner Contest 035 解説
AtCoder Beginner Contest 035 解説
 
OKRワークショップ - vol1.OKRとは
OKRワークショップ - vol1.OKRとはOKRワークショップ - vol1.OKRとは
OKRワークショップ - vol1.OKRとは
 
その文字列検索、std::string::findだけで大丈夫ですか?【Sapporo.cpp 第8回勉強会(2014.12.27)】
その文字列検索、std::string::findだけで大丈夫ですか?【Sapporo.cpp 第8回勉強会(2014.12.27)】その文字列検索、std::string::findだけで大丈夫ですか?【Sapporo.cpp 第8回勉強会(2014.12.27)】
その文字列検索、std::string::findだけで大丈夫ですか?【Sapporo.cpp 第8回勉強会(2014.12.27)】
 
大規模Perl初心者研修を支える技術
大規模Perl初心者研修を支える技術大規模Perl初心者研修を支える技術
大規模Perl初心者研修を支える技術
 
MariaDB migration from commercial database
MariaDB migration from commercial databaseMariaDB migration from commercial database
MariaDB migration from commercial database
 
何をどう学ぶか?
何をどう学ぶか?何をどう学ぶか?
何をどう学ぶか?
 
ハードテック スタートアップのトレンド (2016 年版)
ハードテック スタートアップのトレンド (2016 年版)ハードテック スタートアップのトレンド (2016 年版)
ハードテック スタートアップのトレンド (2016 年版)
 
VLDB2015 会議報告
VLDB2015 会議報告VLDB2015 会議報告
VLDB2015 会議報告
 
高解像度スタートアップガイド Part1(Part2/3へ続く)
高解像度スタートアップガイド Part1(Part2/3へ続く)高解像度スタートアップガイド Part1(Part2/3へ続く)
高解像度スタートアップガイド Part1(Part2/3へ続く)
 
振り返り(アジャイルレトロスペクティブズ)
振り返り(アジャイルレトロスペクティブズ)振り返り(アジャイルレトロスペクティブズ)
振り返り(アジャイルレトロスペクティブズ)
 
AtCoder167Dをダブリングで解く
AtCoder167Dをダブリングで解くAtCoder167Dをダブリングで解く
AtCoder167Dをダブリングで解く
 
C++と仲良くなるためのn問 ~ポインタ編~ #ladiescpp
C++と仲良くなるためのn問 ~ポインタ編~ #ladiescppC++と仲良くなるためのn問 ~ポインタ編~ #ladiescpp
C++と仲良くなるためのn問 ~ポインタ編~ #ladiescpp
 
高解像度スタートアップガイド Part2(Part3へ続く)
高解像度スタートアップガイド Part2(Part3へ続く)高解像度スタートアップガイド Part2(Part3へ続く)
高解像度スタートアップガイド Part2(Part3へ続く)
 
Rolling hash
Rolling hashRolling hash
Rolling hash
 
Linux の hugepage の開発動向
Linux の hugepage の開発動向Linux の hugepage の開発動向
Linux の hugepage の開発動向
 
量子コンピューター向け冷凍機について
量子コンピューター向け冷凍機について量子コンピューター向け冷凍機について
量子コンピューター向け冷凍機について
 
【商模五式】商業模式 營銷方案設計(2021數位轉型即戰力線上工作坊)—20210701
【商模五式】商業模式營銷方案設計(2021數位轉型即戰力線上工作坊)—20210701【商模五式】商業模式營銷方案設計(2021數位轉型即戰力線上工作坊)—20210701
【商模五式】商業模式 營銷方案設計(2021數位轉型即戰力線上工作坊)—20210701
 
畢業旅行規劃說明
畢業旅行規劃說明畢業旅行規劃說明
畢業旅行規劃說明
 
OpenTelemetryを用いたObservability基礎の実装 with AWS Distro for OpenTelemetry(Kuberne...
OpenTelemetryを用いたObservability基礎の実装 with AWS Distro for OpenTelemetry(Kuberne...OpenTelemetryを用いたObservability基礎の実装 with AWS Distro for OpenTelemetry(Kuberne...
OpenTelemetryを用いたObservability基礎の実装 with AWS Distro for OpenTelemetry(Kuberne...
 

Similar to クラスのインスタンス変数について

Module での名前解決について
Module での名前解決についてModule での名前解決について
Module での名前解決についてTomoya Kawanishi
 
値渡しと参照渡しの比較
値渡しと参照渡しの比較値渡しと参照渡しの比較
値渡しと参照渡しの比較kitoku_magic
 
C# コーディングガイドライン 2013/02/26
C# コーディングガイドライン 2013/02/26C# コーディングガイドライン 2013/02/26
C# コーディングガイドライン 2013/02/26Yoshihisa Ozaki
 
Javaクラスファイルの読み方
Javaクラスファイルの読み方Javaクラスファイルの読み方
Javaクラスファイルの読み方y torazuka
 
Java開発の強力な相棒として今すぐ使えるGroovy
Java開発の強力な相棒として今すぐ使えるGroovyJava開発の強力な相棒として今すぐ使えるGroovy
Java開発の強力な相棒として今すぐ使えるGroovyYasuharu Nakano
 
ebisu.rb #19 超実践 super
ebisu.rb #19 超実践 superebisu.rb #19 超実践 super
ebisu.rb #19 超実践 superKaito Minatoya
 
SwiftにおけるClassとStructの使い分け
SwiftにおけるClassとStructの使い分けSwiftにおけるClassとStructの使い分け
SwiftにおけるClassとStructの使い分けKazunobu Tasaka
 
Ruby on Rails 入門
Ruby on Rails 入門Ruby on Rails 入門
Ruby on Rails 入門Yasuko Ohba
 
メタプログラミングRuby勉強会#4
メタプログラミングRuby勉強会#4メタプログラミングRuby勉強会#4
メタプログラミングRuby勉強会#4Ashitaba YOSHIOKA
 
名古屋Ruby会議02 LT:Ruby中級への道
名古屋Ruby会議02 LT:Ruby中級への道名古屋Ruby会議02 LT:Ruby中級への道
名古屋Ruby会議02 LT:Ruby中級への道Shigeru UCHIYAMA
 
PHP 2大 web フレームワークの徹底比較!
PHP 2大 web フレームワークの徹底比較!PHP 2大 web フレームワークの徹底比較!
PHP 2大 web フレームワークの徹底比較!Shohei Okada
 
TypeScript & 関数型講座 第2回 TypeScript という言語
TypeScript & 関数型講座 第2回 TypeScript という言語TypeScript & 関数型講座 第2回 TypeScript という言語
TypeScript & 関数型講座 第2回 TypeScript という言語gypsygypsy
 
Rubyインスタンス変数
Rubyインスタンス変数Rubyインスタンス変数
Rubyインスタンス変数Masayuki Nishida
 
BOF1-Scala02.pdf
BOF1-Scala02.pdfBOF1-Scala02.pdf
BOF1-Scala02.pdfHiroshi Ono
 
BOF1-Scala02.pdf
BOF1-Scala02.pdfBOF1-Scala02.pdf
BOF1-Scala02.pdfHiroshi Ono
 
BOF1-Scala02.pdf
BOF1-Scala02.pdfBOF1-Scala02.pdf
BOF1-Scala02.pdfHiroshi Ono
 
Start!! Ruby
Start!! RubyStart!! Ruby
Start!! Rubymitim
 
【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第6回 ‟文字列とオブジェクト„
【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第6回 ‟文字列とオブジェクト„【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第6回 ‟文字列とオブジェクト„
【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第6回 ‟文字列とオブジェクト„和弘 井之上
 
JavaScriptクイックスタート
JavaScriptクイックスタートJavaScriptクイックスタート
JavaScriptクイックスタートShumpei Shiraishi
 

Similar to クラスのインスタンス変数について (20)

Module での名前解決について
Module での名前解決についてModule での名前解決について
Module での名前解決について
 
値渡しと参照渡しの比較
値渡しと参照渡しの比較値渡しと参照渡しの比較
値渡しと参照渡しの比較
 
C# コーディングガイドライン 2013/02/26
C# コーディングガイドライン 2013/02/26C# コーディングガイドライン 2013/02/26
C# コーディングガイドライン 2013/02/26
 
Javaクラスファイルの読み方
Javaクラスファイルの読み方Javaクラスファイルの読み方
Javaクラスファイルの読み方
 
Java開発の強力な相棒として今すぐ使えるGroovy
Java開発の強力な相棒として今すぐ使えるGroovyJava開発の強力な相棒として今すぐ使えるGroovy
Java開発の強力な相棒として今すぐ使えるGroovy
 
ebisu.rb #19 超実践 super
ebisu.rb #19 超実践 superebisu.rb #19 超実践 super
ebisu.rb #19 超実践 super
 
Phantom Type in Scala
Phantom Type in ScalaPhantom Type in Scala
Phantom Type in Scala
 
SwiftにおけるClassとStructの使い分け
SwiftにおけるClassとStructの使い分けSwiftにおけるClassとStructの使い分け
SwiftにおけるClassとStructの使い分け
 
Ruby on Rails 入門
Ruby on Rails 入門Ruby on Rails 入門
Ruby on Rails 入門
 
メタプログラミングRuby勉強会#4
メタプログラミングRuby勉強会#4メタプログラミングRuby勉強会#4
メタプログラミングRuby勉強会#4
 
名古屋Ruby会議02 LT:Ruby中級への道
名古屋Ruby会議02 LT:Ruby中級への道名古屋Ruby会議02 LT:Ruby中級への道
名古屋Ruby会議02 LT:Ruby中級への道
 
PHP 2大 web フレームワークの徹底比較!
PHP 2大 web フレームワークの徹底比較!PHP 2大 web フレームワークの徹底比較!
PHP 2大 web フレームワークの徹底比較!
 
TypeScript & 関数型講座 第2回 TypeScript という言語
TypeScript & 関数型講座 第2回 TypeScript という言語TypeScript & 関数型講座 第2回 TypeScript という言語
TypeScript & 関数型講座 第2回 TypeScript という言語
 
Rubyインスタンス変数
Rubyインスタンス変数Rubyインスタンス変数
Rubyインスタンス変数
 
BOF1-Scala02.pdf
BOF1-Scala02.pdfBOF1-Scala02.pdf
BOF1-Scala02.pdf
 
BOF1-Scala02.pdf
BOF1-Scala02.pdfBOF1-Scala02.pdf
BOF1-Scala02.pdf
 
BOF1-Scala02.pdf
BOF1-Scala02.pdfBOF1-Scala02.pdf
BOF1-Scala02.pdf
 
Start!! Ruby
Start!! RubyStart!! Ruby
Start!! Ruby
 
【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第6回 ‟文字列とオブジェクト„
【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第6回 ‟文字列とオブジェクト„【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第6回 ‟文字列とオブジェクト„
【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第6回 ‟文字列とオブジェクト„
 
JavaScriptクイックスタート
JavaScriptクイックスタートJavaScriptクイックスタート
JavaScriptクイックスタート
 

More from Tomoya Kawanishi

ENECHANGE社での Scout APM 利用事例
ENECHANGE社での Scout APM 利用事例ENECHANGE社での Scout APM 利用事例
ENECHANGE社での Scout APM 利用事例Tomoya Kawanishi
 
エンジニア転職のノウハウ
エンジニア転職のノウハウエンジニア転職のノウハウ
エンジニア転職のノウハウTomoya Kawanishi
 
Ruby の文字列について
Ruby の文字列についてRuby の文字列について
Ruby の文字列についてTomoya Kawanishi
 
Ruby on Rails のキャッシュ機構について
Ruby on Rails のキャッシュ機構についてRuby on Rails のキャッシュ機構について
Ruby on Rails のキャッシュ機構についてTomoya Kawanishi
 
Ruby初心者からよく質問されること
Ruby初心者からよく質問されることRuby初心者からよく質問されること
Ruby初心者からよく質問されることTomoya Kawanishi
 
RubyGems と Bundler について
RubyGems と Bundler についてRubyGems と Bundler について
RubyGems と Bundler についてTomoya Kawanishi
 
Ruby の正規表現について
Ruby の正規表現についてRuby の正規表現について
Ruby の正規表現についてTomoya Kawanishi
 
Ruby での外部コマンドの実行について
Ruby での外部コマンドの実行についてRuby での外部コマンドの実行について
Ruby での外部コマンドの実行についてTomoya Kawanishi
 
Ruby のワンライナーについて
Ruby のワンライナーについてRuby のワンライナーについて
Ruby のワンライナーについてTomoya Kawanishi
 
AWS のコスト管理をちゃんとしたくてやったこと
AWS のコスト管理をちゃんとしたくてやったことAWS のコスト管理をちゃんとしたくてやったこと
AWS のコスト管理をちゃんとしたくてやったことTomoya Kawanishi
 
PostgreSQL のイケてるテクニック7選
PostgreSQL のイケてるテクニック7選PostgreSQL のイケてるテクニック7選
PostgreSQL のイケてるテクニック7選Tomoya Kawanishi
 
HTTPと Webクローリングについて
HTTPと WebクローリングについてHTTPと Webクローリングについて
HTTPと WebクローリングについてTomoya Kawanishi
 
Active record query interface
Active record query interfaceActive record query interface
Active record query interfaceTomoya Kawanishi
 
Active Support のコア拡張機能について
Active Support のコア拡張機能についてActive Support のコア拡張機能について
Active Support のコア拡張機能についてTomoya Kawanishi
 
Ruby ビジネス創出展 Ruby初心者向けプログラミングセミナー
Ruby ビジネス創出展 Ruby初心者向けプログラミングセミナーRuby ビジネス創出展 Ruby初心者向けプログラミングセミナー
Ruby ビジネス創出展 Ruby初心者向けプログラミングセミナーTomoya Kawanishi
 
RubyのDir、File、IO について
RubyのDir、File、IO についてRubyのDir、File、IO について
RubyのDir、File、IO についてTomoya Kawanishi
 
Thread の利用事例紹介
Thread の利用事例紹介Thread の利用事例紹介
Thread の利用事例紹介Tomoya Kawanishi
 
Ruby の制御構造とリテラルについて
Ruby の制御構造とリテラルについてRuby の制御構造とリテラルについて
Ruby の制御構造とリテラルについてTomoya Kawanishi
 

More from Tomoya Kawanishi (20)

英単語の覚え方
英単語の覚え方英単語の覚え方
英単語の覚え方
 
ENECHANGE社での Scout APM 利用事例
ENECHANGE社での Scout APM 利用事例ENECHANGE社での Scout APM 利用事例
ENECHANGE社での Scout APM 利用事例
 
エンジニア転職のノウハウ
エンジニア転職のノウハウエンジニア転職のノウハウ
エンジニア転職のノウハウ
 
Ruby の文字列について
Ruby の文字列についてRuby の文字列について
Ruby の文字列について
 
Ruby on Rails のキャッシュ機構について
Ruby on Rails のキャッシュ機構についてRuby on Rails のキャッシュ機構について
Ruby on Rails のキャッシュ機構について
 
Ruby初心者からよく質問されること
Ruby初心者からよく質問されることRuby初心者からよく質問されること
Ruby初心者からよく質問されること
 
RubyGems と Bundler について
RubyGems と Bundler についてRubyGems と Bundler について
RubyGems と Bundler について
 
Ruby の正規表現について
Ruby の正規表現についてRuby の正規表現について
Ruby の正規表現について
 
Ruby での外部コマンドの実行について
Ruby での外部コマンドの実行についてRuby での外部コマンドの実行について
Ruby での外部コマンドの実行について
 
Ruby のワンライナーについて
Ruby のワンライナーについてRuby のワンライナーについて
Ruby のワンライナーについて
 
AWS のコスト管理をちゃんとしたくてやったこと
AWS のコスト管理をちゃんとしたくてやったことAWS のコスト管理をちゃんとしたくてやったこと
AWS のコスト管理をちゃんとしたくてやったこと
 
PostgreSQL のイケてるテクニック7選
PostgreSQL のイケてるテクニック7選PostgreSQL のイケてるテクニック7選
PostgreSQL のイケてるテクニック7選
 
HTTPと Webクローリングについて
HTTPと WebクローリングについてHTTPと Webクローリングについて
HTTPと Webクローリングについて
 
Rake
RakeRake
Rake
 
Active record query interface
Active record query interfaceActive record query interface
Active record query interface
 
Active Support のコア拡張機能について
Active Support のコア拡張機能についてActive Support のコア拡張機能について
Active Support のコア拡張機能について
 
Ruby ビジネス創出展 Ruby初心者向けプログラミングセミナー
Ruby ビジネス創出展 Ruby初心者向けプログラミングセミナーRuby ビジネス創出展 Ruby初心者向けプログラミングセミナー
Ruby ビジネス創出展 Ruby初心者向けプログラミングセミナー
 
RubyのDir、File、IO について
RubyのDir、File、IO についてRubyのDir、File、IO について
RubyのDir、File、IO について
 
Thread の利用事例紹介
Thread の利用事例紹介Thread の利用事例紹介
Thread の利用事例紹介
 
Ruby の制御構造とリテラルについて
Ruby の制御構造とリテラルについてRuby の制御構造とリテラルについて
Ruby の制御構造とリテラルについて
 

クラスのインスタンス変数について

  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7. 継承があった場合 class Base def self.civar= val @civar = val end def self.civar @civar end end class Subclass < Base end Base.civar = 1 p Subclass.civar #=> nil Subclass.civar = 2 p Base.civar #=> 1 この行で 1 と表示させたいときは、 後述の class_attribute を利用する ① : Subclass.civar の呼び出し ② : 存在しないので、 Base.civar の呼び出し ③ : インスタンス変数 @civar の  値を返す。このとき self は Subclass のため @civar は未定義 サブクラスはスーパークラスと異なるオブジェクトのため、 同じ名前のインスタンス変数でも異なるオブジェクトを参照する
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.