[#3741] Re: Why it's quiet -- standard distribution issues — Aleksi Niemel<aleksi.niemela@...>
I think it's the feature of the mailing list archive to create a threads of
[#3756] RE: XMP on comments — Aleksi Niemel<aleksi.niemela@...>
> require "xmp"
[#3766] modulo and remainder — Dave Thomas <Dave@...>
[#3776] Kernel.rand — Aleksi Niemel<aleksi.niemela@...>
How about defining:
[#3781] Widening out discussions — Dave Thomas <Dave@...>
[#3795] Re: Array.uniq! returning nil — Aleksi Niemel<aleksi.niemela@...>
> As matz said in [ruby-talk:3785] and Dave said in [ruby-talk:1229],
Hi, Aleksi,
[#3823] Re: Array.pick — Aleksi Niemel<aleksi.niemela@...>
> > Just a general comment--a brief statement of purpose and using
[#3827] JRuby? — Aleksi Niemel<aleksi.niemela@...>
Is there or will there be Ruby equivalent of JPython?
[#3882] Re: Array.uniq! returning nil — Aleksi Niemel<aleksi.niemela@...>
> |look too strange, confusing, or cryptic. Maybe just @, $, %, &.
Hi,
[#3918] A question about variable names... — Dave Thomas <Dave@...>
[#3935] If your company uses Pallets, Skids, Boxes, Lumber, etc. — pallets2@...
[#3956] Tk PhotoImage options — andy@... (Andrew Hunt)
Hi all,
[#3971] Thread and File do not work together — "Michael Neumann" <neumann@...>
following example do not work correctly with my ruby
[#3986] Re: Principle of least effort -- another Ruby virtue. — Andrew Hunt <andy@...>
> Principle of Least Effort.
Hi,
[#4005] Re: Pluggable functions and blocks — Aleksi Niemel<aleksi.niemela@...>
Aleksi makes a question:
[#4008] Ruby installation instructions for Windows — Aleksi Niemel<aleksi.niemela@...>
I had to write these instructions for my friends. I thought it might be nice
[#4043] What are you using Ruby for? — Dave Thomas <Dave@...>
On 15 Jul 2000 22:08:50 -0500,
Hi,
[#4057] Re: What are you using Ruby for? — Aleksi Niemel<aleksi.niemela@...>
Johann:
[#4082] Re: What are you using Ruby for? — Aleksi Niemel<aleksi.niemela@...>
[#4091] 'each' and 'in' — hal9000@...
I just recently realized why the default
[#4107] Re: 'each' and 'in' -- special char problem? — schneik@...
[#4114] Method signature - a question for the group — Dave Thomas <Dave@...>
[#4139] Facilitating Ruby self-propagation with the rig-it autopolymorph application. — Conrad Schneiker <schneik@...>
Hi,
[#4158] Getting Tk to work on Windows — "Michael Neumann" <neumann@...>
Hi....
[#4178] Partly converted English Ruby/Tk widget demo working. — Conrad Schneiker <schneik@...>
Hi,
[#4234] @ variables not updated within method? — Hugh Sasse Staff Elec Eng <hgs@...>
Hugh Sasse Staff Elec Eng <hgs@dmu.ac.uk> writes:
On 27 Jul 2000, Dave Thomas wrote:
[#4267] Ruby.next, Perl6, Python 3000, Tcl++, etc. -- Any opportunities for common implementation code? — "Conrad Schneiker" <schneiker@...>
Hi,
"Conrad Schneiker" wrote:
[ruby-talk:03846] Private variables can be changed outside?
Now I managed to drive myself almost insane. I thought private variables
could not be changed outside class. Anyway, the source code below does
change.
The important routine is hopefully clearly marked:
def change_object_burp_or_fish_burp_outside_fish(text="")
@burp = "surprise" + text
end
The '@burp' could have different 'self' depending where it has been called
from. When you call it directly from the top level the @burp is an instance
variable of the object main (which prints in debugger #<Object:
@burp="burp">). When it's called from Fish#change_from_outside, self is
referring to an object #<Fish: @burp="blop">.
I don't know what to think. I think it's natural which object's @burp we're
accessing. But it's not natural we can access a private variable (of our
child class). If there's no bug in here, this opens up a huge hole. As every
class descents from Object, every class *can* access every other's instance
variables!
This is accomplished by
1) creating a method Object#spy, which access the wanted instance variable
2) a method Class#spy, to the class we wanted to inspect, which caals just
created Object#spy
3) and then by firing a call to Class#spy, which in turn calls Object#spy
with proper 'self', pointing to Class-object.
So we can mess whatever object we want to. Now, if somebody just provides a
method to ask object's instance variables :P.
- Aleksi
Ps. taking out the comment before 'private' didn't change the run on Ruby
1.4.5.
class Fish
# private
@burp
public
def initialize( burp ="blop" )
@burp = burp
end
def internal_burp
puts "Fish says '#{@burp}'"
end
def change_from_outside
change_object_burp_or_fish_burp_outside_fish
end
end
@burp = "burp"
def main_burp
puts "Object says '#{@burp}'"
end
def change_object_burp_or_fish_burp_outside_fish(text="")
@burp = "surprise" + text
end
####
fish = Fish.new
fish.internal_burp
main_burp
puts "\nNow we call fish to change itself"
fish.change_from_outside
fish.internal_burp
main_burp
puts "\nNow we call self to change ourselves"
change_object_burp_or_fish_burp_outside_fish(" again")
fish.internal_burp
main_burp
#################
Outputs:
Fish says 'blop'
Object says 'burp'
Now we call fish to change itself
Fish says 'surprise'
Object says 'burp'
Now we call self to change ourselves
Fish says 'surprise'
Object says 'surprise again'