独学ツクールブログ

ツクールでのオリジナル作品の話を中心に創作関係の徒然な語り。

<< 縦セタって「たてたなばた」に見えるときがあると思うんですよ。 | main | 真・プリセットスクリプトフルグレードアップ計画2:忘れ物と比較いろいろ >>

[ - ] スポンサーサイト

一定期間更新がないため広告を表示しています

| 2018.05.23 Wednesday | - | - |

[ RGSS奮闘記 ] 真・プリセットスクリプトフルグレードアップ計画1:相変わらず舌の根が乾かない人

ということで、リベンジである。
「真・プリセットスクリプトフルグレードアップ計画」と題し、XPのプリセットのアレな部分を改善していく。
少なくとも、VXやAceくらいまではきれいなコードにしたい。

まずは、下準備的なコードを書いていこう。
前から何度もネタにしているObject#tapやSymbol#to_procの定義をはじめ、組み込みクラスのメソッドの一部再定義などである。
最初にとりあえずSymbol#to_proc。これがないといろいろはじまらない。
class Symbol
  def to_proc
    Proc.new { |obj, *args| obj.send(self, *args) }
  end
end
続いて、Objectクラスだが、tapメソッドを定義するだけでなくいろいろといじる。
class Object
  undef id if respond_to?(:id)
  def tap
    yield(self)
    self
  end
  def try(*a, &b)
    if a.empty? && block_given?
      yield self
    else
      public_send(*a, &b) if respond_to?(a.first)
    end
  end
end
Object#idを削除。これはnil.idが4を返すことによる。 RGSS内ではよくいろいろなIDを利用するが、nil.idが4となることで、本来ならエラーになってほしい処理を通ってしまい、バグが見つけにくくなるおそれがある。また、このメソッドを削除しても、同じ意味のObject#object_idがあるから問題ない。
tapは先日の説明の通りなので説明は省略。
さて、今回新しく出てきたtryメソッド。これは単純に言えば「メソッドがあれば実行」するためのものである。詳しいところはググればいくらでも出てくるのではしょるが、つまり
name = user ? user.name : "名無し"
name = user.try(:name) || "名無し"
となっるくらいすっきりする話だ。

次回は再定義いろいろ。


タグ:[RGSS] [フルグレードアップ計画]

| 2015.02.18 Wednesday 22:43 | comments(0) | trackbacks(0) |

[ - ] スポンサーサイト

| 2018.05.23 Wednesday 22:43 | - | - |

コメント

コメントする






この記事のトラックバックURL

トラックバック

このページの先頭へ▲

Twitter

WebClap

Blogram

ブログランキングならblogram

calendar

S M T W T F S
  12345
6789101112
13141516171819
20212223242526
2728293031  
<< October 2019 >>

categories

archives

Amazon

selected entries

recent comment

recent trackback

recent ranking

links

search this site.

sponsored links

others

mobile

qrcode

powered

無料ブログ作成サービス JUGEM