yaotti's diary

Software is Eating the World

ruby

名前空間

変数とメソッドは違うらしい #!/usr/bin/env ruby # -*- coding: utf-8 -*- a=1 def a puts "hello" end p a #=>1 a #=>何もなし a() #=>hello p a.class #=>Fixnum p a().class #=>hello NilClass と思ったけど,a=1のaはFixnumクラスのオブジェクトなんだ…

特異クラス

#!/usr/bin/env ruby # -*- coding: utf-8 -*- obj = nil class << obj def hello puts "Hello world" end end obj.hello #=>Hello world 参考: おおなんかおもしろいな. undefはnilに定義するんではなく,定義を無かったことにするみたい.

メソッド定義

ふと,こんなことできないのかなーと思ったのだけれど, #!/usr/bin/env ruby # -*- coding: utf-8 -*- def Integer.plus(n) return Integer.value + n end p 1.plus(10) #=>11が欲しい なんかできそうだよなぁ.すべてがオブジェクトなrubyなら. 追記 あっ…

はじるび2

callccがあるみたいだ.でも今後消える可能性もあるとか. callccのわかりやすい説明:Route 477 - Ruby勉強会@関西-16「30分でわかるcallccの使い方」rubyでfibonacci #!/usr/bin/env ruby # -*- coding: utf-8 -*- def fib(n) cnt = nil a, b = 1, 0 call…

はじるび

#!/usr/bin/ruby def outer() def inner() print "inner", "\n" end inner() end outer() #コメントアウトするとinner()にてエラー inner() rubyでは内部定義する意味はあまりなさそうだ. 一度定義されるとトップレベルから見えるようになるらしい.