るりまサーチ

最速Rubyリファレンスマニュアル検索!
442件ヒット [1-100件を表示] (0.056秒)
トップページ > ライブラリ:ビルトイン[x] > クエリ:@[x] > クエリ:BasicObject[x]

別のキーワード

  1. basicobject __send__
  2. basicobject instance_eval
  3. _builtin basicobject
  4. basicobject !
  5. basicobject ==

クラス

モジュール

オブジェクト

検索結果

<< 1 2 3 ... > >>

BasicObject (38050.0)

特殊な用途のために意図的にほとんど何も定義されていないクラスです。 Objectクラスの親にあたります。Ruby 1.9 以降で導入されました。

...=== 性質
BasicObject
クラスは Object クラスからほとんどのメソッドを取り除いたクラスです。

Object クラスは様々な便利なメソッドや Kernel から受け継いだ関数的メソッド
を多数有しています。
これに対して、 BasicObject クラス...
...ます。

例えば、 BasicObject#method_missingを利用して Proxy パターンを実
装する場合にはObject クラスに定義済みのメソッドはプロクシできないという
問題が発生します。このような場合に Object ではなく BasicObject から派生
して...
...すべきです。
真に必要な場合にだけ BasicObject から派生してください。

=== 例

//emlist[例][ruby]{
class Proxy < BasicObject
def initialize(target)
@
target = target
end

def method_missing(message, *args)
@
target.__send__(message, *args)
end
end

proxy =...

BasicObject#!=(other) -> bool (21062.0)

オブジェクトが other と等しくないことを判定します。

...論理否定して返します。
このため、サブクラスで BasicObject#== を再定義しても != とは自動的に整合性が
とれるようになっています。

ただし、 BasicObject#!= 自身や BasicObject#! を再定義した際には、ユーザーの責任で
整合性を...
...のと想定されています。

@
param other 比較対象となるオブジェクト
@
see BasicObject#==, BasicObject#!

//emlist[例][ruby]{
class NonequalityRecorder < BasicObject
def initialize
@
count = 0
end
attr_reader :count

def !=(other)
@
count += 1
super
end
end
rec...

BasicObject#instance_eval {|obj| ... } -> object (21056.0)

オブジェクトのコンテキストで文字列 expr またはオブジェクト自身をブロックパラメータとするブロックを 評価してその結果を返します。

...い。

BasicObject
を継承して作ったクラス内で instance_eval する場合はトップレベルの定数や Kernel モジュールに定義されているメソッドは見えません。
これは、トップレベルの定数が Object 以下に作成されるためです。

@
param ex...
...文字列です。

@
param filename 文字列を指定します。ファイル filename に文字列 expr が
書かれているかのように実行されます。スタックトレースの
表示などを差し替えることができます。

@
param lineno 整数...
...し替えることができます。

//emlist[例][ruby]{
class Foo
def initialize data
@
key = data
end
private
def do_fuga
p 'secret'
end
end

some = Foo.new 'XXX'
some.instance_eval{p @key} #=> "XXX"
some.instance_eval{do_fuga } #=> "secret" # private メソッドも呼び出せ...

BasicObject#instance_eval(expr, filename = "(eval)", lineno = 1) -> object (21056.0)

オブジェクトのコンテキストで文字列 expr またはオブジェクト自身をブロックパラメータとするブロックを 評価してその結果を返します。

...い。

BasicObject
を継承して作ったクラス内で instance_eval する場合はトップレベルの定数や Kernel モジュールに定義されているメソッドは見えません。
これは、トップレベルの定数が Object 以下に作成されるためです。

@
param ex...
...文字列です。

@
param filename 文字列を指定します。ファイル filename に文字列 expr が
書かれているかのように実行されます。スタックトレースの
表示などを差し替えることができます。

@
param lineno 整数...
...し替えることができます。

//emlist[例][ruby]{
class Foo
def initialize data
@
key = data
end
private
def do_fuga
p 'secret'
end
end

some = Foo.new 'XXX'
some.instance_eval{p @key} #=> "XXX"
some.instance_eval{do_fuga } #=> "secret" # private メソッドも呼び出せ...

BasicObject#==(other) -> bool (21044.0)

オブジェクトが other と等しければ真を、さもなくば偽を返します。

...トの同一性になっています。

@
param other 比較対象となるオブジェクト
@
return other が self と同値であれば真、さもなくば偽

//emlist[例][ruby]{
class Person < BasicObject
def initialize(name, age)
@
name = name
@
age = age
end
end

tanaka1 = Person....
...new("tanaka", 24)
tanaka2 = Person.new("tanaka", 24)

tanaka1 == tanaka1 #=> true
tanaka1 == tanaka2 #=> false
//}

@
see BasicObject#equal?, Object#==, Object#equal?,
Object#eql?...

絞り込み条件を変える

BasicObject#method_missing(name, *args) -> object (21044.0)

呼びだされたメソッドが定義されていなかった時、Rubyインタプリタがこのメソッド を呼び出します。

...ォルトではこのメソッドは例外 NoMethodError を発生させます。


@
param name 未定義メソッドの名前(シンボル)です。
@
param args 未定義メソッドに渡された引数です。
@
return ユーザー定義の method_missing メソッドの返り値が未定義...
...かのように見えます。

//emlist[例][ruby]{
class Foo
def initialize(data)
@
data = data
end
def method_missing(name, lang)
if name.to_s =~ /\Afind_(\d+)_in\z/
if @data[lang]
p @data[lang][$1.to_i]
else
raise "#{lang} unknown"
end
else...
...メソッドを override する場合は対象のメソッド名に対して
Object#respond_to? が真を返すようにしてください。
そのためには、Object#respond_to_missing? も同様に override する必
要があります。

@
see Object#respond_to?, Object#respond_to_missing?...

BasicObject#! -> bool (21032.0)

オブジェクトを真偽値として評価し、その論理否定を返します。

...して
扱われることはありません。

@
return オブジェクトが偽であれば真、さもなくば偽

//emlist[例][ruby]{
class NegationRecorder < BasicObject
def initialize
@
count = 0
end
attr_reader :count

def !
@
count += 1
super
end
end

recorder = Negatio...
...nRecorder.new
!recorder
!!!!!!!recorder
puts 'hoge' if !recorder

puts recorder.count #=> 3
//}

//emlist[例][ruby]{
class AnotherFalse < BasicObject
def !
true
end
end
another_false = AnotherFalse.new

# another_falseは*真*
puts "another false is a truth" if another_false
#=> "another fa...

BasicObject#instance_exec(*args) {|*vars| ... } -> object (21032.0)

与えられたブロックをレシーバのコンテキストで実行します。

...できます。

@
param args ブロックパラメータに渡す値です。

//emlist[例][ruby]{
class KlassWithSecret
def initialize
@
secret = 99
end
end
k = KlassWithSecret.new
# 以下で x には 5 が渡される
k.instance_exec(5) {|x| @secret + x } #=> 104
//}

@
see Module#class_...
...exec, Module#module_exec, BasicObject#instance_eval...

BasicObject#equal?(other) -> bool (21026.0)

オブジェクトが other と同一であれば真を、さもなくば偽を返します。

...
ただし、 BasicObject の位置づけ上、どうしても再定義が必要な用途もあるでしょう。
再定義する際には自分が何をしているのかよく理解してから実行してください。

@
param other 比較対象となるオブジェクト
@
return other が se...
...さもなくば偽

//emlist[例][ruby]{
original = "a"
copied = original.dup
substituted = original

original == copied #=> true
original == substituted #=> true
original.equal? copied #=> false
original.equal? substituted #=> true
//}

@
see Object#equal?, Object#==, Object#eql?...

BasicObject#singleton_method_added(name) -> object (21026.0)

特異メソッドが追加された時にインタプリタから呼び出されます。

...ます。

@
param name 追加されたメソッド名が Symbol で渡されます。

//emlist[例][ruby]{
class Foo
def singleton_method_added(name)
puts "singleton method \"#{name}\" was added"
end
end

obj = Foo.new
def obj.foo
end

#=> singleton method "foo" was added
//}

@
see Module#m...
...ethod_added,BasicObject#singleton_method_removed,BasicObject#singleton_method_undefined...

絞り込み条件を変える

<< 1 2 3 ... > >>