[#394281] Can someone throw me a bone — Bob Baird <lists@...>

Hi all,

14 messages 2012/04/02

[#394311] using hash as database? Secure databases with ruby? — ruby rocks <lists@...>

I am new to programming and am learning ruby as my first language. I

16 messages 2012/04/03
[#394315] Re: using hash as database? Secure databases with ruby? — Hassan Schroeder <hassan.schroeder@...> 2012/04/03

On Tue, Apr 3, 2012 at 10:30 AM, ruby rocks <lists@ruby-forum.com> wrote:

[#394318] Re: using hash as database? Secure databases with ruby? — ruby rocks <lists@...> 2012/04/03

Hassan Schroeder wrote in post #1054862:

[#394320] Re: using hash as database? Secure databases with ruby? — Florian Gilcher <flo@...> 2012/04/03

[#394321] Re: using hash as database? Secure databases with ruby? — ruby rocks <lists@...> 2012/04/03

Florian Gilcher wrote in post #1054875:

[#394375] Call for comments - Structure — Hal Fulton <rubyhacker@...>

Greetings, fellow Rubyists...

14 messages 2012/04/04

[#394390] Design pattern question — James French <James.French@...>

Hi group,

15 messages 2012/04/05

[#394471] How to pull out specific part of a variable and set to another variable? — "Charlie B." <lists@...>

I have a variable that is a long string. The variable looks like this:

9 messages 2012/04/09

[#394492] New to Ruby, tutorial gives wrong example. — Roger McDonald <lists@...>

I am just starting with Ruby with intention to learn and perhaps use it

11 messages 2012/04/10

[#394533] A Beginner's Question about Metaprogramming — Phil Stone <lists@...>

Hey guys, have a question about Ruby programming and found this forum

20 messages 2012/04/10

[#394616] How to test if array element exists? — Soul Surf <lists@...>

I'm new to Ruby and just want to test if an array element exists. Here's

11 messages 2012/04/13

[#394642] how to avoid escaping special chars after backslah in string — Lucky Nl <lists@...>

Hi friends,

13 messages 2012/04/13
[#394645] Re: how to avoid escaping special chars after backslah in string — Roger Pack <lists@...> 2012/04/13

so what's your ideal syntax here?

[#394658] Why doesn't Fixnum#to_d exist? — Mark Campbell <nitrodist@...>

http://stdlib.rubyonrails.org/libdoc/bigdecimal/rdoc/index.html

15 messages 2012/04/13
[#394660] Re: Why doesn't Fixnum#to_d exist? — Bartosz Dziewoński <matma.rex@...> 2012/04/13

It does exist, but it's in a separate file - bigdecimal/util or utils,

[#394663] Re: Why doesn't Fixnum#to_d exist? — Mark Campbell <nitrodist@...> 2012/04/13

Yes, that file has the String#to_d, Float#to_d and Rational#to_d.

[#394675] Operator overloading of the subscript operator — Ralph Shnelvar <ralphs@...32.com>

I understand that operators (e.g. +, -, *, []) are nothing more than method names so that

16 messages 2012/04/14
[#394677] Re: Operator overloading of the subscript operator — "Jan E." <lists@...> 2012/04/14

Hi,

[#394678] Re: Operator overloading of the subscript operator — Ralph Shnelvar <ralphs@...32.com> 2012/04/14

Jan,

[#394767] Capital Cyrillic letter in Ruby class name (UTF-8) — Vladimir Kerimov <lists@...>

Hi matz,

22 messages 2012/04/17

[#394803] Why must I know whether I extend a class or a module? — Marc Heiler <lists@...>

Hi.

18 messages 2012/04/18
[#394843] Re: Why must I know whether I extend a class or a module? — Intransition <transfire@...> 2012/04/19

On Wednesday, April 18, 2012 1:13:17 PM UTC-4, Marc Heiler wrote:

[#394853] How can i make the colorful font with black background for puts? — gmspro gmspro <lists@...>

puts 'Hello World."

10 messages 2012/04/19

[#394865] finding duplicates in an array and its index number — newto ruby <lists@...>

Hi,

11 messages 2012/04/19

[#394964] To developers of Ruby: Feeble documentation - weakness of Ruby and the Ruby on Rails (2nd edition) — Sergey Ezhov <lists@...>

RGlyZWN0bHkgSSBhcG9sb2dpemUgZm9yIG15IEVuZ2xpc2ggLSBJIHVzZWQg

13 messages 2012/04/23
[#394971] Re: To developers of Ruby: Feeble documentation - weakness of Ruby and the Ruby on Rails (2nd editio — Brian Candler <lists@...> 2012/04/23

I think you are a bit confused.

[#394969] gem-packed script with DATA section does not work — Wybo Dekker <wybo@...4all.nl>

The attached minimal gem contains a script that reads "Hello World!"

20 messages 2012/04/23
[#394970] Re: gem-packed script with DATA section does not work — Xavier Noria <fxn@...> 2012/04/23

DATA points to the contents after the __END__ directive of the executable

[#394973] Re: gem-packed script with DATA section does not work — Wybo Dekker <wybo@...4all.nl> 2012/04/23

On 2012-04-23 11:39, Xavier Noria wrote:

[#394988] Re: gem-packed script with DATA section does not work — Ryan Davis <ryand-ruby@...> 2012/04/23

[#394997] Re: gem-packed script with DATA section does not work — Peter Zotov <whitequark@...> 2012/04/23

Ryan Davis писал 23.04.2012 22:58:

[#395024] -BEGINNERS- Where do I Start? — "Thought M." <lists@...>

Hello World....... I am very new to code but have been glancing at it

13 messages 2012/04/25

[#395035] if if if statment — fox foxmaster <lists@...>

Hi all,

19 messages 2012/04/25

[#395085] Wrappng up my Text Game! Need Help! — Jared Hobbs <lists@...>

Hi, everyone. This is my first post!

18 messages 2012/04/26

[#395099] ruby/shoes GUI - sqlite, how to isert a variable key in table? — "Danilo L." <lists@...>

Hello, I am struggling to insert a variable into a table, for example:

17 messages 2012/04/27
[#395104] Re: ruby/shoes GUI - sqlite, how to isert a variable key in table? — Zachary Scott <zachary@...> 2012/04/27

Hi Danilo, How are you enjoying shoooes?

[#395105] Re: ruby/shoes GUI - sqlite, how to isert a variable key in table? — Michel <michel.revesche@...> 2012/04/27

[#395113] why does this return 255 bits instead of 256 (and general bit byte hex string array crypt mayhem :P) — instance_variable ok <lists@...>

So I am doing something that requires me to manipulate things on the bit

14 messages 2012/04/27

[#395193] delete character from array — Ok Ok <lists@...>

Here is my question...

17 messages 2012/04/30
[#395196] Re: delete character from array — Ok Ok <lists@...> 2012/04/30

Yes that was exactly it. I have one more question maybe you can help me

Re: A Beginner's Question about Metaprogramming

From: "Jan E." <lists@...>
Date: 2012-04-16 23:32:13 UTC
List: ruby-talk #394743
Phil Stone wrote in post #1056788:
> Thanks for all the help, but there are some more question that I have:
>
> 1. Why is it necessary to use a Singleton class in the above example at
> all?

An object has two sources for its methods: First of all, it can use the 
methods defined in its class. Those methods are shared by *all* 
instances of the class.

However, an object can also have methods on its own, which are *not* 
shared with the other instances. Those methods are called "singleton 
methods" and are defined in the singleton class of the object (I 
wouldn't use the word "metaclass", because it can also have a different 
meaning).

The difference between normal methods and singleton methods gets a bit 
tricky when dealing with classes, because now you basically have to 
distinguish between three cases:

a) A class is a normal object and can use the methods defined in its 
class. The class of a class is always Class. This means: The methods 
defined in Class (like "attr_accessor" or "superclass") are shared by 
all classes.

b) Like any other object, a class can also have singleton methods. Those 
methods only belong to the class itself and not to the other classes.

c) A class can also *define* methods for its instances. It this case, 
the class isn't the user but rather the provider.

Now to your example:

Where do you want the methods to go? You certainly don't want *all* 
classes to have a "charisma" method. Instead, you want a *specific* 
class to have it, namely Creature. That's why you define a singleton 
method for Creature (case b).

However, letting the class set the standard values for "charisma", 
"strength" etc. doesn't make sense if the instances of Creature don't 
use these properties. That is, you also have to define correspoding 
methods for the instances of Creature (case c). This can of course be 
done automatically by calling "attr_accessor".

You may also come to the conclusion that *every* class should have a 
"traits" method. Then you would define this method in Class (case a).

It hope this makes things a bit clearer.



> Why are the methods defined onto the Singleton class? I would rather
> think that the following is correct, but for some reason it doesn't
> work:
>
>     arr.each do |a|
>         class_eval do
>             define_method( a ) ...
>
> For what the code is supposed to do, this seems like the right
> function... but it does not work. Why? Why was a metaclass necessary?

It does work, but it's not what you want. You don't want to define a 
method for the instances of Creature but rather for Creature itself. The 
Creature class is to set the standard values for "charisma" etc.



> 2.. I still don't grasp exactly what class << self means. I know that
> class << ClassName would add on to the class of ClassName. Please
> explain

This "class << ..." is simply the syntax for defining or opening the 
singleton class of an object:

class << my_object
  # method definitions etc.
end

As you can see, it corresponds to the syntax of defining or opening a 
"normal" class:

class MyClass
  # method definitions etc.
end

Well, and if you want to open/define the singleton class for "self", 
then you write

class << self
  ...
end

-- 
Posted via http://www.ruby-forum.com/.

In This Thread