スポンサーサイト

 --------
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
カテゴリ :スポンサー広告 トラックバック(-) コメント(-)

第18回 スクリプト初心者な君へ

 2008-11-20
今回の講座は、
・再定義
・alias
・super
・self
について話したいと思います。


1.再定義
スクリプトを変更する際に皆さんはどうしていますか?
元のスクリプトに直接書き込んで変更するのか、
元のスクリプトは、残しておいて再定義するのか。

私は、再定義をオススメします。
その理由は、
 1.削除 or コメントアウトで元の処理に戻すことが出来る。
 2.変更箇所が一目でわかる。
 3.再利用しやすい。
と、まぁこんな感じです。
1、2なんかは、直接変更の方でも出来ますが、
ひと手間かかるので面倒ですし、コメントが増えるとスクリプトが見難くなるので。

あ、再定義というのは、処理の上書きのことです。
同じクラス内に、同じ名前のメソッドを定義することで、
古いほうの処理に上書きします。

2.エイリアスって何だい?
これは、別名を定義するためのものです。
alias 新しい名前 古い名前
このように使用します。
あるメソッドを再定義したいけど、再定義前のメソッドも使いたい時などに使用します。
まぁ、主にスクリプトの競合防止のために使います。
2つのスクリプトで同じメソッドを再定義してしますと、
1つ目のスクリプトの処理は消えちゃいますよね?
ですので、メソッドを書き直す"再定義"ではなく、追加するという感じです。
def hoge
 p "1"
end
alias piyo hoge
def hoge
 piyo
 p "2"
end
大丈夫ですよね?

3.super って?
これは、スーパークラスのメソッドを呼び出してるわけです。
class Foo < Bar
ってあるでしょ?
Foo クラスの method メソッド内に super が書かれていたら、
Bar クラスの method メソッドを呼び出してるわけです。

4.self
レシーバってやつですね。自分自身を表しています。
つまり、メソッドを呼び出したインスタンスです。
class Foo
 def my_p
  return self
 end
end
f = Foo.new
p f      # => #<Foo:0x284068c>
p f.my_p  # => #<Foo:0x284068c>
同じものであることがわかると思います。

def foo
 p "foo"
end
def bar=(val)
 p val
end

# self は省略することが出来ます。
foo
# bar メソッドを実行したつもりでも、変数に代入と見なされます。
bar = 1
p bar
# self を付けて、メソッドであることを明確にします。
self.bar = 3
コメント




 

 ※ コメント内にURLを含めるには、バッククォート(`)をURLの直前に付け加えてください。


管理人のみ閲覧許可 [?]

トラックバック
トラックバックURL:
http://cacaosoft.blog42.fc2.com/tb.php/131-5c021529
≪ トップページへこのページの先頭へ  ≫
カレンダー
10 << 2017/11 >> 12
- - - 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 - -

カテゴリー
最近の記事
最近のコメント
タグクラウド

リンク
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。