diff options
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | vm_eval.c | 22 |
2 files changed, 21 insertions, 6 deletions
@@ -1,3 +1,8 @@ +Sun May 25 06:50:19 2014 Zachary Scott <e@zzak.io> + + * vm_eval.c: [DOC] Improve instance_eval description when given a + block or String arguments. By @nathanl via documenting-ruby/ruby#28 + Sun May 25 06:29:39 2014 Zachary Scott <e@zzak.io> * array.c: [DOC] Clarify default argument for Array.new. @@ -1595,24 +1595,34 @@ specific_eval(int argc, VALUE *argv, VALUE klass, VALUE self) /* * call-seq: * obj.instance_eval(string [, filename [, lineno]] ) -> obj - * obj.instance_eval {| | block } -> obj + * obj.instance_eval {|obj| block } -> obj * * Evaluates a string containing Ruby source code, or the given block, * within the context of the receiver (_obj_). In order to set the * context, the variable +self+ is set to _obj_ while * the code is executing, giving the code access to _obj_'s - * instance variables. In the version of <code>instance_eval</code> - * that takes a +String+, the optional second and third - * parameters supply a filename and starting line number that are used - * when reporting compilation errors. + * instance variables and private methods. + * + * When <code>instance_eval</code> is given a block, _obj_ is also + * passed in as the block's only argument. + * + * When <code>instance_eval</code> is given a +String+, the optional + * second and third parameters supply a filename and starting line number + * that are used when reporting compilation errors. * * class KlassWithSecret * def initialize * @secret = 99 * end + * private + * def the_secret + * "Ssssh! The secret is #{@secret}." + * end * end * k = KlassWithSecret.new - * k.instance_eval { @secret } #=> 99 + * k.instance_eval { @secret } #=> 99 + * k.instance_eval { the_secret } #=> "Ssssh! The secret is 99." + * k.instance_eval {|obj| obj == self } #=> true */ VALUE |