"hoge".kind_of?(String) # => true
123.kind_of?(Integer) # => true
"hoge".instance_of?(String) # => true
123.instance_of?(Integer) # => false
123.kind_of?(Fixnum) # => true
class Hoge
self.def fuga
...
end
end
Hoge.fuga
class Hoge
attri_accessor :foo
end
hoge = Hoge.new
hoge.foo = 123
puts hoge.foo
class Hoge
def foo
@foo
end
def foo=(val)
@foo = val
end
end
hoge = Hoge.new
hoge.foo = 123
puts hoge.foo
def hoge(name, no=1, option=true)
...
end
def hoge(name, opt = {})
no = opt[:no]
flag = opt[:flag]
end
hoge( "fuga", no: 1, flag: false )
def hoge(name, no: 1, flag: true)
puts "#{name}, #{not}, #{flag}"
end
hoge( "smith", flag: false )
def hoge( *param )
param.each do |p|
puts p
end
end
hoge( 'hello', 1, true )
* 1個は、パラメーターは配列で渡る
def hoge( **param )
param.each do |key, val|
puts "#{key} = #{val}"
end
end
hoge( msg: 'hello', no: 1, flag: true )
*(2個)は、パラメーターはハッシュで渡る
def hoge( array )
array.each do |ary|
yield ary if block_given?
end
end
# または
def hoge( array, &block )
array.each do |ary|
block.call( ary ) if block
end
end
hoge( [1,3,5] ) { |x| puts x }
openssl_verify_mode = "none"
if openssl_verify_mode.kind_of?(String)
openssl_verify_mode = "OpenSSL::SSL::VERIFY_#{openssl_verify_mode.upcase}".constantize
end
module Status
NEW = 0
UPDATED = 1
DELETED = 2
STATUS_NAME = {
Status::NEW => "新規"
Status::UPDATED => "更新"
Status::DELETED => "削除"
}
end
def initialize(opts = {})
opts.each {|k, v| instance_variable_set("@#{k}", v) }
end
hash = {}.tap {|h|
me.instance_variables.each { |sym|
h[sym] = me.instance_variable_get(sym)
}
}
メソッドを定義せず、Proc を使い、複数の値に対して同じ処理をさせる(内部サブルーチン的な使い方)
[ [ 1, "spring"],
[ 2, "summer"],
[ 3, "autumn"],
[ 4, "winter"]
].map { |param|
Proc.new{|id, name|
puts "#{id}: #{name}"
}.call(param[0], param[1])
}