diff options
author | zzak <zzak@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2013-01-19 02:37:01 +0000 |
---|---|---|
committer | zzak <zzak@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2013-01-19 02:37:01 +0000 |
commit | eed593eba6a18a71d876ac49178aeeb0aad6b7c0 (patch) | |
tree | f242c824717204f75434916d286fe3fa163935a1 /struct.c | |
parent | b7ae472b58f0bb47754b0db975fe74359c2d4b0f (diff) |
* struct.c (Struct.new): Document Struct.new with block
Patch by Hiroyuki Iwatsuki [Bug #7674]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38883 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'struct.c')
-rw-r--r-- | struct.c | 17 |
1 files changed, 14 insertions, 3 deletions
@@ -283,9 +283,10 @@ rb_struct_define(const char *name, ...) /* * call-seq: - * Struct.new( [aString] [, aSym]+> ) -> StructClass - * StructClass.new(arg, ...) -> obj - * StructClass[arg, ...] -> obj + * Struct.new( [aString] [, aSym]+> ) -> StructClass + * Struct.new( [aString] [, aSym]+> ) {|StructClass| block } -> StructClass + * StructClass.new(arg, ...) -> obj + * StructClass[arg, ...] -> obj * * Creates a new class, named by <i>aString</i>, containing accessor * methods for the given symbols. If the name <i>aString</i> is @@ -296,6 +297,16 @@ rb_struct_define(const char *name, ...) * letter. Assigning a structure class to a constant effectively gives * the class the name of the constant. * + * If a block is given, it will be evaluated in the context of + * <i>StructClass</i>, passing <i>StructClass</i> as a parameter. + * + * Customer = Struct.new(:name, :address) do + * def greeting + * "Hello #{name}!" + * end + * end + * Customer.new("Dave", "123 Main").greeting # => "Hello Dave!" + * * <code>Struct::new</code> returns a new <code>Class</code> object, * which can then be used to create specific instances of the new * structure. The number of actual parameters must be |