Hi,
In message "[ruby-talk:01268] Draft of the updated Ruby FAQ"
on 00/02/08, Clemens Hintze <clemens.hintze / alcatel.de> writes:
|1.4 What is the history of Ruby?
| ... wanted a genuine object-oriented, easy-to-use object-oriented
| scripting language.
|
|Perhaps delete one 'object-oriented'? If matz agrees, of course!
Agreed. :-)
Is this my typo? ...checking... It appears so, sorry.
|2.1 Does assignment generate a new copy of an object?
| ... All variables ... If they have not been initialized, they
| reference the object nil. ...
|
|This is not true for local variables. If they wasn't initialized, they
|are void. It is an error to use them!
Well, local variables can be declared but not initialized, e.g.
if false
foo = 42
end
p foo # uninitialized local variable whose value is nil.
|3.1 What is an iterator?
| An iterator is a method which is passed a block ...
|
|IMHO, blocks are not passed, but attached to methods. If they would be
|passed, it could mean that they also are objects. But I feel they are
|not, at least not in Ruby's sense of objects.
Agreed. In addition, I assume iterators as 'a method which USES
attached block' lately.
|3.3 How is a block used in an iterator?
| There are three ways to execute a block from an iterator method:
| ... (3) using Proc.new.
|
|Proc.new creates an Proc instance from a attached block. But it does
|not execute it. This has do be done via 'call' anyway.
Yes, but I think creating Proc out of block is using it. So it may be
better to say:
> There are three ways to USE a block from an iterator method:
|4.1 What does :var mean?
| A colon followed ..., but the ``:'' form will create a local
| variable if it doesn't already exist.
|
|I could not verify it! I have tried
|
| ruby -e 'def ttt; p :a; p a; end; ttt'
| /tmp/rb4haGUE:1:in `ttt': undefined local variable or method `a' for ...
:symbol registers that identifier in symbol table, but does not create
local variable. Oh, by the way, I'm planning to make symbols distinct
object, not fixnums in near future.
|5.2 Are +, -, * ... operators?
|
| However, the following are built-in control structures, not
| methods, which cannot be overridden.
|
| =, .., ..., !, not, &&, and, |, or, ~, ::
|
|I think you mean '&&' instead of &&, yes? I do not know right
|now, but can I overload '||'? I do not think so.
Yes. | and ~ can be overridden.
|But the visibility thing is the same? That means protected is somewhat
|superfluos, isn't it (from the newbie point-of-view)?
protected is sometime useful for say internal attribute. e.g. if you
want to sort object by their internal attribute, but do not want to
make the attribute public, you can declare the attribute (i.e. access
method) as protected.
|7.22 What is the difference between thread and fork?
| ...
| Thread and fork have following characteristics:
| ...
| o thread does not cause thrashing.
|
|What does that mean in opposition to processes spawned with 'fork'?
Think of forking 10000 times, your system would hang. OTOH, Ruby would
not hand nor crash by creating 10000 threads (incredibly slow tough).
matz.