als RSS-Feed abonnieren
Hundezuechter
McKinsey
XML-Ferientermine
xml-ferientermine
Go-Spiel-bei-DGS
Projektarbeit
Wohnungssuche
Bewerbungen
Ruby-in-Second-Life
Clatronic-CTV731-bei-Saturn
T_Shirts_Mousepads
Singleboersenvergleich
TimeSystem
Katzen
katzen
Arbeitsamt_I
Klick
2007-01-21
2007-01-19
Leapc
iMacros-to-Watir-Konverter
ASP
Ruby-Stocks
National-Geograpic
Google-Kalender
XML-Ruby
XMLTV
css
scribus
ruby-links
c-sharp
videos-fuer-psp-konvertieren
tchibo-infoglobe
uuencode-ruby
linux-phone-neo-1973
mx600-mouse
ruby-mechanize-https
ncurses
internetcafes
corba
ruby-einladung
ruby-setup
ruby-xml
watir
find-ersatz-in-ruby
ruby-priority-queue
gem-needle
gem-dependency
index
DotNetTests
TDD
Gadgets
RSS
Geocaching
2006-10-22_CSS_hier
2006-10-22-zaurus
2006-10-22
2006-10-22_Mono_und_Linux


vom: 2006-10-23 21:47

Ruby-Gem Dependency

Folgende Newsgroup Nachrichten habe ich dazu gefunden – hört sich ganz interessant an. Inbesondere, da hier auch dieses schöne Beispiel mit Aktien genannt wird und ich ein ähnlich gelagertes Programm schreiben wollte, daß ein Aktiendepot verwalten/überwachen soll.

Dependency 1.0.0
Alle 2 Nachrichten zum Thema - Baumansicht

Von:        Tim Fletcher - Profil anzeigen
Datum:        Fr 20 Okt. 2006 23:07
E-Mail:         "Tim Fletcher" <twog...@gmail.com>
Gruppen:         comp.lang.ruby
Noch nicht bewertet
Bewertung:     
Optionen anzeigen
Antworten | Antwort an Autor | Weiterleiten | Drucken | Einzelne Nachricht | Original anzeigen | Missbrauch melden | Nachrichten dieses Autors suchen

A Smalltalk-inspired dependency mechanism for Ruby. Like this:

    class StockWatcher
      include Dependency::Methods
      def initialize(stock)
        stock.express_interest_in :price, :for => self, :send_back =>
:price_changed
      end
      def price_changed(old_price, stock)
        # gets called whenever the stock object changes it's price
      end
    end

Completely unrelated to Rails' dependency code - similar to observers
though.

http://rubyforge.org/projects/dependency

gem install dependency

Antworten

Von:        Joel VanderWerf - Profil anzeigen
Datum:        Fr 20 Okt. 2006 23:57
E-Mail:         Joel VanderWerf <v...@path.berkeley.edu>
Gruppen:         comp.lang.ruby
Noch nicht bewertet
Bewertung:     
Optionen anzeigen
Antworten | Antwort an Autor | Weiterleiten | Drucken | Einzelne Nachricht | Original anzeigen | Missbrauch melden | Nachrichten dieses Autors suchen

- Zitierten Text ausblenden -
- Zitierten Text anzeigen -
Tim Fletcher wrote:
> A Smalltalk-inspired dependency mechanism for Ruby. Like this:

>     class StockWatcher
>       include Dependency::Methods
>       def initialize(stock)
>         stock.express_interest_in :price, :for => self, :send_back =>
> :price_changed
>       end
>       def price_changed(old_price, stock)
>         # gets called whenever the stock object changes it's price

       end     en  unrelated to Rails' dependency code - similar to observers
> though.

> http://rubyforge.org/projects/dependency

> gem install dependency

You can do this with http://raa.ruby-lang.org/project/observable:

require 'observable'

include Observable
include Observable::Match

class Stock
   extend Observable

   observable :price

   def initialize price
     @price = price
   end

   def sell
     puts "selling at #{price}" 
   end
end

class StockWatcher
   GREATER_THAN = proc do |price|
     MatchProc.new { |test_price| test_price > price }
   end

   def initialize(stock)
     stock.when_price CHANGES do |price, old_price|
       puts "price = #{price}  (was #{old_price.inspect})" 
     end

     stock.when_price GREATER_THAN[20] do
       stock.sell
     end
   end
end

acme = Stock.new(10)
watcher = StockWatcher.new(acme)

10.step(30, 5) do |acme.price|
   puts "---" 
end

__END__

Output:

price = 10  (was nil)
---
price = 15  (was 10)
---
price = 20  (was 15)
---
selling at 25
price = 25  (was 20)
---
selling at 30
price = 30  (was 25)
---

-- 
       vjoel : Joel VanderWerf : path berkeley edu : 510 665 3407

Links:

Kontakt: Thomas Preymesser
Prinzenallee 36
13359 Berlin
Telefon: 030 - 49 78 37 06
mobile: 0172-8111959
eMail: thopre@gmail.com