✖
もっとwww うへへwww 気持ち悪くwww
もっとwww うへへwww 気持ち悪くwww
そういえば昨日気付いたけど、おれはもう青春とかいらないと思った。
#!ruby -Ku
class X
attr_reader :a, :b
def self./(a)
new(a)
end
def self.to_s
"×365"
end
def initialize(a)
@a = a
end
def /(b)
@b = b
print self
self
end
def <(o)
puts " #{o}"
end
def to_s
@a.a + "スケッチ" + b.to_s
end
class ::Object
def _
X.new("ひだまり")
end
end
end
X / _ / X < :来週も見てくださいね!
正式名称になるように一文字足しました
X := Object clone do ( / := method( if (self ?called, "スケッチ", "ひだまり") print self called := true self ) < := method(o, "365" print o println ) ) X / _ / X < "来週も見てくださいね!"
このコードにおいて、 _ は評価されない ( / の引数なのだけど、/ 内では _ を評価していない) ので定義してなくてもいいところがポイントです。?called は、初回呼び出し時の called スロットがないために起こるエラーを回避します (正確な?の効果は「対象オブジェクトが指定メッセージに応答しないならば、メッセージセンドを行わない」かな? つまり ? でわっしょい!)。
文字列リテラルを使わずに call argAt(0) とかもできるはずなんですが、どうもマルチバイトだとダメみたいで諦めてます。