FC2ブログ

Ruby on RailsでWebサイト公開!に挑戦中

レンタルサーバーでWebサイトを公開すべく、Ruby on Railaの勉強をする日々を語ります。

PREV | PAGE-SELECT | NEXT

≫ EDIT

Rubyのクラス、コンストラクタ、アクセサ

Rubyの基本を再確認中。
今回はクラス定義、コンストラクタ、アクセサについて。



●クラスの定義

〇構文

class 識別子 [`<' superclass ]
式..
end

・クラス名はアルファベットの大文字で始まる識別子。

〇メソッドの定義
例)

def foo(x, y = 1) # 2番目の引数yにデフォルト値を指定
10 * x + y
end

●コンストラクタ
https://docs.ruby-lang.org/ja/2.4.0/method/Object/i/initialize.html

〇構文
initialize(*args, &block) -> object

・ユーザ定義クラスのオブジェクト初期化メソッド。
・Class#newから新しく生成されたオブジェクトの初期化のために呼び出される。

●new

〇構文
new(*args, &block) -> object

・自身のインスタンスを生成して返す。
・このメソッドの引数はブロック引数も含め Object#initialize に渡される。

●アクセサ
https://docs.ruby-lang.org/ja/2.4.0/class/Module.html#I_ATTR_ACCESSOR

〇構文
attr_accessor(*name) -> nil

・引数には、String または Symbolを1つ以上指定する。
・インスタンス変数nameに対する読み取りメソッドと書き込みメソッドの両方を定義する。
このメソッドによって以下が定義される。

def name
@name
end
def name=(val)
@name = val
end

●Symbol

〇構文
:symbol
:'symbol'
%s!symbol! # %記法

〇シンボルの実装と用途
・Rubyの内部実装では、メソッド名や変数名、定数名、クラス名など の`名前'を整数で管理している。
 これは名前を直接文字列として処理するよりも 速度面で有利だから。そしてその整数をRubyのコード上で表現したものがシンボル。
・`名前'を指し示す時など、 文字列そのものが必要なわけではない時に用いる。
 ハッシュのキー { :key => "value" }
 アクセサの引数で渡すインスタンス変数名 attr_reader :name
 メソッド引数で渡すメソッド名 __send__ :to_s
 C の enum 的な使用 (値そのものは無視してよい場合)

●サンプルコード

class Hero
attr_accessor :id, :name

def initialize(id, name)
@id = id;
@name = name
end
end

hero = Hero.new(11, "相田")
puts hero.id
puts hero.name
hero.id = 12
puts hero.id

| Ruby | 16:52 | comments:0 | trackbacks:0 | TOP↑

COMMENT















非公開コメント

TRACKBACK URL

http://hbnist76.blog.fc2.com/tb.php/570-9752a978

TRACKBACK

PREV | PAGE-SELECT | NEXT