Class: Proc

Inherits:
Object show all
Defined in:
lib/source/ruby.rb

Overview

Proc objects are blocks of code that have been bound to a set of local variables. Once bound, the code may be called in different contexts and still access those variables.

def gen_times(factor)
  return Proc.new {|n| n * factor }
end

times3 = gen_times(3)
times5 = gen_times(5)

times3.call(12)               #=> 36
times5.call(5)                #=> 25
times3.call(times5.call(4))   #=> 60

Instance Method Summary collapse

Constructor Details

#initialize(func) ⇒ Proc

call-seq:

Proc.new {|...| block } -> proc

Creates a new Proc object, bound to the current context.



4729
4730
4731
4732
4733
# File 'lib/source/ruby.rb', line 4729

def initialize(func)
  `this.__block__=func`
  `this.__block__.__id__=func.__id__||Red.id++`
  `this.__id__=this.__block__.__id__`
end

Instance Method Details

#==(other) ⇒ Object

call-seq:

prc == other => true or false

Returns true if prc and other are the same object, false otherwise.



4741
4742
4743
# File 'lib/source/ruby.rb', line 4741

def ==(other)
  `this.__id__==other.__id__`
end

#[]Object

call-seq:

prc.call(params, ...) -> obj
prc[params, ...]      -> obj

Invokes the block, setting the block’s parameters to the values in params using something close to method calling semantics.

Returns the value of the last expression evaluated in the block.

proc = Proc.new {|x| x * 100 }

proc[4]   #=> 400


4758
4759
4760
# File 'lib/source/ruby.rb', line 4758

def []()
  `this.__block__.apply(this,arguments)`
end

#arityObject

FIX: Incomplete



4763
4764
# File 'lib/source/ruby.rb', line 4763

def arity
end

#callObject

call-seq:

prc.call(params, ...) -> obj
prc[params, ...]      -> obj

Invokes the block, setting the block’s parameters to the values in params using something close to method calling semantics.

Returns the value of the last expression evaluated in the block. See also Proc#yield.

proc = Proc.new {|x| x * 100 }

proc.call(4)    #=> 400


4780
4781
4782
# File 'lib/source/ruby.rb', line 4780

def call
  `this.__block__.apply(this,arguments)`
end

#to_procObject

call-seq:

proc.to_proc -> proc

Part of the protocol for converting objects to Proc objects. Instances of class Proc simply return themselves.



4790
4791
4792
# File 'lib/source/ruby.rb', line 4790

def to_proc
  return self
end