, Ruby.
"" , . , , -. , , :
var state;
function incMult(factor) {
if (state === undefined) {
state = 0;
}
state += 1;
return factor * state;
}
print(incMult(2));
print(incMult(2));
print(incMult(2));
ECMAScript, .
[. , , ECMAScript - , , , state . ( ECMAScript ), . ECMAScript , .]
, , , , .
1960- , , , , . , , .
, - . , Ruby , . : .
, Ruby :
inc_mult = Object.new
def inc_mult.call(factor)
@state ||= 0
@state += 1
factor * @state
end
p inc_mult.(2)
p inc_mult.(2)
p inc_mult.(2)
[Sidenote: 1:1 - , , , " - ". , - " - ". , , .]
, , , , Ruby , : . (, .) , , , :
foo = Object.new
state = nil
foo.define_singleton_method :inc_mult do |factor|
state ||= 0
state += 1
factor * state
end
p foo.inc_mult(2)
p foo.inc_mult(2)
p foo.inc_mult(2)