ACHTUNG. Das ist ein Archiv des alten forum.ruby-portal.de. Die aktuelle Mailingliste gibt es auf lists.ruby-lang.org/pipermail/ruby-de.

NOTICE. This is a ready-only copy of the old forum.ruby-portal.de. You can find the current mailing list at lists.ruby-lang.org/pipermail/ruby-de.

Die Programmiersprache Ruby

Blog|

Forum|

Wiki  


Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]

Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Vorzeichenermittlung?
BeitragVerfasst: 16 Jan 2007, 14:33 
Offline
Interpreter

Registriert: 15 Mär 2005, 19:26
Beiträge: 6142
Wohnort: Karlsruhe
Moin, moin!

Ich bin gerade in einem anderen Thread ("Kaufmännisches Runden") darüber gestolpert, dass ich eigentlich eine Numeric#sign-Methode bräuchte. Nun ist die nicht schwierig zu erstellen ((x<=>x.abs)*2+1), gehört jedoch eigentlich zum Standard einer jeden Programmiersprache.

Für Ruby 1.9 habe ich in der Dokumentation nur BigDecimal#sign gefunden, für Ruby 1.8 nichts entsprechendes.

Meine Frage: Heisst eine entsprechende Methode einfach anders und hat sich irgendwo versteckt? - Falls es keine gibt, ist eine geplant?

Falls da noch nichts da oder geplant ist, sollte ein RCR (oder wie auch immer das heisst) gestellt werden.

_________________
WoNáDo.set_state!(:retired)


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 16 Jan 2007, 15:44 
Offline
Obfuscator

Registriert: 18 Feb 2004, 15:47
Beiträge: 560
Wohnort: Erkelenz (Ostlimburg)
(Nachdem ich ein paar Minuten auf die Seite gewartet habe:)

x <=> 0 tut es doch eigentlich ganz gut. Um übrigens schnell aus der irb heraus herauszufinden, ob es eine entsprechende Methode gibt, ist das gem what_methods recht praktisch:




-10.what? -1  #=> []


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 16 Jan 2007, 21:42 
Offline
Interpreter

Registriert: 15 Mär 2005, 19:26
Beiträge: 6142
Wohnort: Karlsruhe
malte hat geschrieben:
(Nachdem ich ein paar Minuten auf die Seite gewartet habe:)

Irgendwo ist da derzeit der Wurm am werkeln...

malte hat geschrieben:
x <=> 0 tut es doch eigentlich ganz gut.

Ja, aber eine Methode namens Numeric#sign würde ich schlicht und einfach erwarten, da sie zum numerischen Standard gehört und auch in vielen Algorithmen benötigt wird. Sie standardmässig zu Ruby hinzuzufügen ist doch wirklich simpel.


malte hat geschrieben:
Um übrigens schnell aus der irb heraus herauszufinden, ob es eine entsprechende Methode gibt, ist das gem what_methods recht praktisch:




-10.what? -1  #=> []

Interessant - aber so ganz 100%ig ist die Methode noch nicht.

1
2
3
4
5
6
7
8
9
10
11
12
13
irb(main):001:0> require "what_methods"
=> true
irb(main):002:0> 10.5.what? 10
10.5.to_int == 10
10.5.floor == 10
10.5.to_i == 10
10.5.prec_i == 10
10.5.truncate == 10
=> ["to_int", "floor", "to_i", "prec_i", "truncate"]
irb(main):003:0> 10.5.div 2
=> 5
irb(main):004:0> 10.5.what? 5
=> []

_________________
WoNáDo.set_state!(:retired)


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 16 Jan 2007, 22:04 
Offline
Obfuscator

Registriert: 18 Feb 2004, 15:47
Beiträge: 560
Wohnort: Erkelenz (Ostlimburg)
WoNáDo hat geschrieben:


1
2
3
4
irb(main):003:0> 10.5.div 2
=> 5
irb(main):004:0> 10.5.what? 5
=> []


Nun ja, die Prüfung kann ja nicht sämtliche natürliche Zahlen als mögliche Argumente miteinschließen.



1
2
irb> 10.5.what? 5, (2)
=> ["div"]


Ansonsten mußt Du schon so etwas versuchen, aber dann brauchst Du schon etwas Geduld.



1
2
N = 10000
(-N..N).find_all { |x| !10.5.what?(5, x).empty? }


Anbei, gibt es eine Möglichkeit, die Verneinung hier dem Auge auffälliger zu gestalten? Vorne ein !, hinten ein empty? finde ich nicht so schön.


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 16 Jan 2007, 22:40 
Offline
Interpreter

Registriert: 15 Mär 2005, 19:26
Beiträge: 6142
Wohnort: Karlsruhe
malte hat geschrieben:
Nun ja, die Prüfung kann ja nicht sämtliche natürliche Zahlen als mögliche Argumente miteinschließen.

Diese Kleinigkeit des zweiten Parameters hatte ich übersehen :oops:

>>>>> Edit Moderator WoNáDo >>>>>

Nach Core verschoben, da es um noch nicht existierende Methoden geht.

_________________
WoNáDo.set_state!(:retired)


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 22 Jan 2007, 22:47 
Offline
Interpreter

Registriert: 15 Mär 2005, 19:26
Beiträge: 6142
Wohnort: Karlsruhe
Ich hab jetzt einen kleinen Change Proposal in comp.lang.ruby geschrieben.
Zitat:
Hi!

I didn't find there a discussion about this here, so first a description of this (very) minor change proposal.

I miss the "Sign function" in class "Numeric".

It can simply be added by something like...

class Numeric
def sign
self<0?-1:self>0?1:0
end
end

....but it should be much faster if be defined in the original class.

This method will be used in several algorithms, so it should be available from my point of view.

Wolfgang Nádasi-Donner

_________________
WoNáDo.set_state!(:retired)


Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
cron