[]=(p1, p2)
public
Attribute Assignment—Assigns to the
instance variable named by symbol or fixnum the value
obj and returns it. Will raise a NameError if the named variable does not exist,
or an IndexError if the index is out of
range.
Customer = Struct.new(:name, :address, :zip)
joe = Customer.new("Joe Smith", "123 Maple, Anytown NC", 12345)
joe["name"] = "Luke"
joe[:zip] = "90210"
joe.name
joe.zip
Show source
VALUE
rb_struct_aset(VALUE s, VALUE idx, VALUE val)
{
long i;
if (TYPE(idx) == T_STRING || TYPE(idx) == T_SYMBOL) {
return rb_struct_aset_id(s, rb_to_id(idx), val);
}
i = NUM2LONG(idx);
if (i < 0) i = RSTRUCT_LEN(s) + i;
if (i < 0) {
rb_raise(rb_eIndexError, "offset %ld too small for struct(size:%ld)",
i, RSTRUCT_LEN(s));
}
if (RSTRUCT_LEN(s) <= i) {
rb_raise(rb_eIndexError, "offset %ld too large for struct(size:%ld)",
i, RSTRUCT_LEN(s));
}
rb_struct_modify(s);
return RSTRUCT_PTR(s)[i] = val;
}