Personne ne va payer pour ce qu'il peut sans risque pirater ! Soyons sérieux !
Tu sait quoi ? moi quand j'ouvre mon robinet j'ai de l'eau pour un prix ridicule. Certains jours il en tombe même du ciel !
Eh bien pourtant il y a des sociétés comme Danone qui s'entêtent a essayer de vendre de l'eau 100x plus cher en moyenne et en plus il faut porter de lourds packs de bouteille jusqu'a chez soit.
C'est toujours la même chose avec vous. Ça marche pas chez vous (et éventuellement pour quelques personnes que vous connaissez), et vous en concluez que "ça marche pas" avec "GNU/GNOME/Linux". Et bien non, il faut enlever ces oeillères, chez moi ça marche correctement.
Menfin je t'ai vu plusieurs fois tenir ce discourt et tu n'est pas plus objectif que les gens que tu critique et surtout tu es immédiatement agressif sans raison.
Si. Pouvoir utiliser un Hash, une Lambda ou un Array ...
Autant pour moi je t'avais mal compris. On a bien la même vision de la chose.
Pas vraiment. On faisait du Duck Typing avant. C’est juste que le terme a été utilisé pour décrire ce typage dans Python.
La encore je voulais parler de l'expression pas du concept. Mea culpa.
Oui, c’est du Duck-Typing. Si vous voulez du typage fort, vous prenez C++ ou Java ou autre
Non ce que tu viens de décrire n'a rien a voir avec le concept de Duck Typing. Python qui a inventé la notion Duck typing te pète une erreur si tu demande un index trop grand ou te renvoie une valeur par défaut si explicitement demandé.
La c'est un choix de Ruby de faire comme Perl et PHP de renvoyer nil plutôt que péter. Le programmeur doit donc tester sinon il risque d'appeler une méthode sur nil. C'est juste une question de gout.
Et je te rappelle que Ruby que tu connais mieux que tout le monde apparemment, est un langage a typage fort tout comme Java.
J'avais bien peur d'avoir compris ça ...
Malheureusement il n'y a pas a ma connaissance pas de moyen d'en refaire un tableau vu que la représentation ne correspond pas a la forme littérale.
Je suppose que tu obtient cette chaîne avec un print_r ?
La comme ça la seule idée qui me vient est une regexp du genre: ereg("\[$key\] => ([a-zA-Z' ]+)", $str, $regs)
Ça marche sur ton exemple, mais teste la bien quand même.
en somme, tu reimplementes qq chose qui devrait etre dans le langage par defaut...
Oui, mais c'est justement AHMA la grande force de Ruby. Souvent dans les troll Python/Ruby (dieu sait qu'il y en a depuis l'événement de Django et Rails) un des arguments des Pythonistes (dont je fait partie) est que la librairie standard de Ruby est incomplète et je suis assez d'accord. Seulement avec cette possibilité de monkey_patching les builtins on peut corriger ça facilement, il n'y a qu'a voir le nombre de méthode que Rails rajoute.
Quand je codais en PHP je souffrait du même comportement foireu mais je ne pouvais rien faire si ce n'est une moche fonction get_item($array, $index) ou un if a chaque accès.
Idem en Python bien qu'il soit très complet j'ai souvent envie de rajouter quelque chose. Et la a part sous classer (ce qui est génant avec les objet litéraux) on ne peut pas modifier les builts-in et a mon grand regret Python3 ne le permet pas non plus.
La souplesse de Ruby pour coder une verrue, c'est bien mais je considère quand même qu'il s'agit d'un comportement par défaut incorrect pour un tableau..
Pour être franc je suis du même avis. C'est typiquement un comportement Perlien/PHPien qui cache les problèmes. Je préfère les IndexError de Python et le .get a l'occasion.
Sinon pourquoi "get!" et pas "get" ?
Il me semblait que le point d'exclamation est une convention de nommage pour les methodes qui modifie les objets..
Oui mais pas seulement. Exemple: http://api.rubyonrails.org/classes/ActiveRecord/Base.html#M0(...)
Le bang est aussi utilisé pour signaler la possible levée d'exception.
Ça fait de nombreuse fois que je vois écrit "moins pire" dans des commentaires. Selon moi ça n'a aucun sens mais vu que c'est en titre et que personne ne s'est encore insurgé j'en viens a douter.
Est-ce correct ? Est-ce une référence que je n'ai pas ?
Car c'est vraiment immonde à prononcer et je ne voit pas comment quelque chose peut être "moins pire" ou "plus meilleur" ...
Exact normalement en Python on devrait parler de "noms" et non pas de "variables".
Un nom n'est pas typé il sert juste a désigner un objet qui lui a un type/ une classe.
Aujourd'hui il est tout à fait possible d'avoir un site, avec le même rendu graphique. Même sous Internet Explorer version 6 tout en respectant les normes du w3c.
Hahahahah
Il faudra que tu me dise dans quelle RFC on trouve ça : !-- [if lt IE 7]
Ok ça valide vu que c'est un commentaire, mais bon n'empêche que depuis déjà des année on est obligé de faire des ajustement pour IE que ce soit au moyen de commentaires conditionnels ou de Hacks CSS.
Bref on est loin du monde merveilleux que tu décrit.
Posté par Jean B .
En réponse au message rubygems.
Évalué à 2.
Il faut penser a donner les droit root si jamais tu fait un gem install ...
c'est à dire?
et pourquoi?
Eh bien installe une gem revien a copier des fichiers dans /var/lib, comme ce sont des librairies partagées il faut les droit d'admin ou bien les installer dans ton répertoire utilisateur moyennant une option dont je ne me souvient plus.
Pour lancer une commande avec les droits d'admin tu peut utiliser sudo ta_commande ou bien juste su
ça marche avec le terminal(pour l'installation des gems), mais j'aimerai plutôt me servir de rubygems pour installer les gems.
rubygems (commande gem) s'utilise en ligne de commande justement. c'est la ou je ne comprend pas ce que tu désigne par rubygem
Posté par Jean B .
En réponse au message rubygems.
Évalué à 4.
gem -v ou éventuellement gem1.8 -v
Il faut penser a donner les droit root si jamais tu fait un gem install ...
Mais je suis pas sur de ce dont tu parle, tu dit installer des gems avec le terminal mais pas réussir a lancer rubygem ? Il y a comme une incohérence.
Et pourquoi un raccourci pour un logiciel en ligne de commande ?
Est-il possible de se servir de "scite"?
Oui ou de n'importe quel autre éditeur.
Est-ce que quelqu'un peut me préciser quelques liens qui contiennent des exemples de code en ruby ou des tutoriaux qui expliquent un peu la programmation en ruby sur linux?
C'est la même que sous windows ...
La seule différence est le shebang en début de fichier mais il n'est pas obligatoire tu peut continuer a lancer tes programme comme sous windows ruby truc.rb
D'ailleurs, je me demande si les compréhensions de listes de Python permettent de faire ce que permet LINQ
Yes they can !
-->[]
Plus sérieusement oui, même si la syntaxe sera bien plus éloignée du SQL.
Mais vu qu'on peut faire des SELECT avec for, des FROM avec in, des JOIN avec +, des WHERE avec if, etc.
On peut même le faire en évaluation paresseuse avec les moins connues genexp.
Allez, une abération que j'ai jamais supporté dans python :
pourquoi se trimbaler "self" dans la définition d'une méthode d'un objet ?
Ok, explicit better gnia gnia gnia
Le programme / les développeurs sont trop con pour savoir qu'une méthode qui se trouve dans la définition d'un objet est lié à un objet ?
Ca pue surtout le modèle objet un peu foiré ça...
Il y a effectivement pas mal de langages ou il est implicite, mais bien souvent ça entretient une confusion sur son statut, ses possibilités, ...
Au moins en Python les choses sont claires, l'instance est un argument comme les autres (on peut le nommer toto si ça nous chante).
Voir self/this comme un argument est très pratique pour exploiter pleinement l'héritage multiple par exemple:
class Foo(object):
def bar(self, arg0):
print self, arg0
foo = Foo()
foo.bar('baz')
# <__main__.Foo object at 0x7f22d6d0aef0> baz
Foo.bar(1)
# TypeError: unbound method bar() must be called with Foo instance as first argument (got str instance instead)
Foo.bar(foo, 'baz')
# <__main__.Foo object at 0x7f22d6d0aef0> baz
class Qux(object):
def bar(self, arg0):
print 'Qux !'
class Fum(Foo, Qux):
pass
Fum().bar('egg')
# <__main__.Fum object at 0x7f22d6bfa7d0> egg
class Fum(Foo, Qux):
def bar(self, *args, **kwargs):
return Qux.bar(self, *args, **kwargs)
Fum().bar('egg')
# Qux !map(Foo.bar, [Fum()] * 2, ['egg', 'spam'])
# <__main__.Fum object at 0x7f22d6c5c490> egg
# <__main__.Fum object at 0x7f22d6c5c490> spam
Et tu peut même intervenir dans l'autre sens quand tu commence à taper dans les __new__ et autres __metaclass__.
Prise indépendamment les lignes de codes sont relativement propres.
La critique viens plutôt AHMA d'un problème de factorisation.
Exemple cette combo box qui est copiée 3 fois en dur dans le script:
<code>
<combobox>
<variable>mgenre</variable>
<item>Blues</item>
#snip 150 lignes
<item>Trip-Hop</item>
<item>Vocal</item>
</combobox>
</code>
Ou encore ceci:
<code>
if [ "$search" = "Deezer" ]; then
{
#Conversion des espaces en url html et autres charactères spéciaux
mquery=$(echo $query | sed -e 's/ /%20/g' | sed -e 's/[éèêë]/e/g' | sed -e 's/à/a/g' | sed -e 's/[ôö]/o/g' | sed -e 's/ù/u/g' | sed -e 's/ç/c/g')
##Lancement de firefox
firefox http://www.deezer.com/#music/result/all/$mquery 2>/dev/null &
}
elif [ "$search" = "Imeem" ]; then
{
##Recherche à effectuer sur imeem
#Conversion des espaces en url html et autres charactères spéciaux
mquery=$(echo $query | sed -e 's/ /%20/g' | sed -e 's/[éèêë]/e/g' | sed -e 's/à/a/g' | sed -e 's/[ôö]/o/g' | sed -e 's/ù/u/g' | sed -e 's/ç/c/g')
##Lancement de firefox
firefox http://www.imeem.com/tag/$mquery/music/ 2>/dev/null &
}
elif [ "$search" = "Les 2" ]; then
{
#Conversion des espaces en url html et autres charactères spéciaux
mquery=$(echo $query | sed -e 's/ /%20/g' | sed -e 's/[éèêë]/e/g' | sed -e 's/à/a/g' | sed -e 's/[ôö]/o/g' | sed -e 's/ù/u/g' | sed -e 's/ç/c/g')
##Lancement de firefox
firefox http://www.deezer.com/#music/result/all/$mquery 2>/dev/null &
firefox http://www.imeem.com/tag/$mquery/music/ 2>/dev/null &
}
fi
</code>
Ne pense tu pas que répéter 3 fois mquery est un peut dommage ? Ne serait il pas mieux placé avant le case ? Ou alors en faire une fonction "urlecode" par exemple.
Enfin n'importe quoi mais éviter ces copier collé.
Rien d'horrible mais je pense que les 1K lignes de ce script pourrait fondre comme neige au soleil, et surtout que la partie interface mériterait d'être séparée ce qui rendrait le tout bien plus maintenable.
C'est marrant on dirais que tu n'arrive pas a imaginer autre chose que Java.
Pourquoi multiples valeurs de retours voudrais dire pas de contrôles des types ?
Il est vrai que je ne connais pas de langage implémentant les deux concepts, mais rien n'empêche de le faire:
public final (int, String) foobar(String foo) {
// snip
}
[^] # Re: Une réponse à ta question
Posté par Jean B . En réponse au journal Franck Riester : "L’interopérabilité n’est pas nécessaire pour les consommateurs". Évalué à 7.
Tu sait quoi ? moi quand j'ouvre mon robinet j'ai de l'eau pour un prix ridicule. Certains jours il en tombe même du ciel !
Eh bien pourtant il y a des sociétés comme Danone qui s'entêtent a essayer de vendre de l'eau 100x plus cher en moyenne et en plus il faut porter de lourds packs de bouteille jusqu'a chez soit.
Sont vraiment fadas ces multinationales !
[^] # Re: Ouaip
Posté par Jean B . En réponse au journal Retour d'expérience du monde d'apple. Évalué à 3.
Plus sérieusement oui ça ne marche pas parfaitement. C'est un problème récurent dont une des raisons est celle-ci:
http://digg.com/linux_unix/Newly_leaked_Antitrust_Memo_Bill_(...)
Menfin je t'ai vu plusieurs fois tenir ce discourt et tu n'est pas plus objectif que les gens que tu critique et surtout tu es immédiatement agressif sans raison.
[^] # Re: Code le toi même
Posté par Jean B . En réponse à la dépêche Sortie de Moonlight 1.0. Évalué à 2.
Autant pour moi je t'avais mal compris. On a bien la même vision de la chose.
Pas vraiment. On faisait du Duck Typing avant. C’est juste que le terme a été utilisé pour décrire ce typage dans Python.
La encore je voulais parler de l'expression pas du concept. Mea culpa.
[^] # Re: pourquoi j'ai choisi python...
Posté par Jean B . En réponse au journal Python, langage de l'année pour la seconde année consécutive. Évalué à 6.
from urllib import urlopen
from BeautifulSoup import BeautifulSoup
print '\n'.join(i['href'] for i in BeautifulSoup().feed(urlopen('http://www.vmspython.org').read())('a'))
1 ligne aussi si on passe sur les imports
--> []
[^] # Re: Code le toi même
Posté par Jean B . En réponse à la dépêche Sortie de Moonlight 1.0. Évalué à 2.
Non ce que tu viens de décrire n'a rien a voir avec le concept de Duck Typing. Python qui a inventé la notion Duck typing te pète une erreur si tu demande un index trop grand ou te renvoie une valeur par défaut si explicitement demandé.
La c'est un choix de Ruby de faire comme Perl et PHP de renvoyer nil plutôt que péter. Le programmeur doit donc tester sinon il risque d'appeler une méthode sur nil. C'est juste une question de gout.
Et je te rappelle que Ruby que tu connais mieux que tout le monde apparemment, est un langage a typage fort tout comme Java.
[^] # Re: ...
Posté par Jean B . En réponse au message Récupérer le contenu au sein d'Array. Évalué à 2.
Malheureusement il n'y a pas a ma connaissance pas de moyen d'en refaire un tableau vu que la représentation ne correspond pas a la forme littérale.
Je suppose que tu obtient cette chaîne avec un print_r ?
La comme ça la seule idée qui me vient est une regexp du genre:
ereg("\[$key\] => ([a-zA-Z' ]+)", $str, $regs)
Ça marche sur ton exemple, mais teste la bien quand même.
# ...
Posté par Jean B . En réponse au message Récupérer le contenu au sein d'Array. Évalué à 4.
Dans ce cas $result['toto']['plop']['*'] devrait te renvoyer ce que tu recherche
[^] # Re: Code le toi même
Posté par Jean B . En réponse à la dépêche Sortie de Moonlight 1.0. Évalué à 2.
Oui, mais c'est justement AHMA la grande force de Ruby. Souvent dans les troll Python/Ruby (dieu sait qu'il y en a depuis l'événement de Django et Rails) un des arguments des Pythonistes (dont je fait partie) est que la librairie standard de Ruby est incomplète et je suis assez d'accord. Seulement avec cette possibilité de monkey_patching les builtins on peut corriger ça facilement, il n'y a qu'a voir le nombre de méthode que Rails rajoute.
Quand je codais en PHP je souffrait du même comportement foireu mais je ne pouvais rien faire si ce n'est une moche fonction get_item($array, $index) ou un if a chaque accès.
Idem en Python bien qu'il soit très complet j'ai souvent envie de rajouter quelque chose. Et la a part sous classer (ce qui est génant avec les objet litéraux) on ne peut pas modifier les builts-in et a mon grand regret Python3 ne le permet pas non plus.
[^] # Re: Code le toi même
Posté par Jean B . En réponse à la dépêche Sortie de Moonlight 1.0. Évalué à 2.
Pour être franc je suis du même avis. C'est typiquement un comportement Perlien/PHPien qui cache les problèmes. Je préfère les IndexError de Python et le .get a l'occasion.
Sinon pourquoi "get!" et pas "get" ?
Il me semblait que le point d'exclamation est une convention de nommage pour les methodes qui modifie les objets..
Oui mais pas seulement. Exemple: http://api.rubyonrails.org/classes/ActiveRecord/Base.html#M0(...)
Le bang est aussi utilisé pour signaler la possible levée d'exception.
[^] # Code le toi même
Posté par Jean B . En réponse à la dépêche Sortie de Moonlight 1.0. Évalué à 2.
a = []
puts a[42] #=> nil
class Array
def get!(index)
val = self[index]
raise IndexError if val.nil?
return val
end
end
puts a.get!(42) #=> IndexError
[^] # Re: usurpation d'identité
Posté par Jean B . En réponse à la dépêche RPM va enfin de l'avant avec la version 4.6. Évalué à 3.
La 0.9 et la 2.0 n'ont rien a voir avec la 1.0.
# Argh
Posté par Jean B . En réponse au journal Vista, moins pire qu'on le dit. Évalué à 5.
Est-ce correct ? Est-ce une référence que je n'ai pas ?
Car c'est vraiment immonde à prononcer et je ne voit pas comment quelque chose peut être "moins pire" ou "plus meilleur" ...
[^] # Re: Et vous ?
Posté par Jean B . En réponse au journal Nouvelle interview de Linus Torvalds. Évalué à 10.
Il y a un élevage ?
[^] # Re: Mouarf
Posté par Jean B . En réponse au journal Troll : Ubuntu vs other AND KDE vs Gnome réuni !. Évalué à 0.
[^] # Re: Critique
Posté par Jean B . En réponse au journal Explorez les richesses du langage Python. Évalué à 5.
Un nom n'est pas typé il sert juste a désigner un objet qui lui a un type/ une classe.
[^] # Re: Transition
Posté par Jean B . En réponse au journal 100 000 dollars pour Theora/Vorbis !. Évalué à 4.
Hahahahah
Il faudra que tu me dise dans quelle RFC on trouve ça :
!-- [if lt IE 7]
Ok ça valide vu que c'est un commentaire, mais bon n'empêche que depuis déjà des année on est obligé de faire des ajustement pour IE que ce soit au moyen de commentaires conditionnels ou de Hacks CSS.
Bref on est loin du monde merveilleux que tu décrit.
[^] # Re: Gné ?
Posté par Jean B . En réponse au message rubygems. Évalué à 2.
c'est à dire?
et pourquoi?
Eh bien installe une gem revien a copier des fichiers dans /var/lib, comme ce sont des librairies partagées il faut les droit d'admin ou bien les installer dans ton répertoire utilisateur moyennant une option dont je ne me souvient plus.
Pour lancer une commande avec les droits d'admin tu peut utiliser
sudo ta_commande
ou bien justesu
ça marche avec le terminal(pour l'installation des gems), mais j'aimerai plutôt me servir de rubygems pour installer les gems.
rubygems (commande gem) s'utilise en ligne de commande justement. c'est la ou je ne comprend pas ce que tu désigne par rubygem
# Gné ?
Posté par Jean B . En réponse au message rubygems. Évalué à 4.
gem -v
ou éventuellementgem1.8 -v
Il faut penser a donner les droit root si jamais tu fait un
gem install ...
Mais je suis pas sur de ce dont tu parle, tu dit installer des gems avec le terminal mais pas réussir a lancer rubygem ? Il y a comme une incohérence.
Et pourquoi un raccourci pour un logiciel en ligne de commande ?
# ...
Posté par Jean B . En réponse au message ruby et ubuntu. Évalué à 3.
Oui ou de n'importe quel autre éditeur.
Est-ce que quelqu'un peut me préciser quelques liens qui contiennent des exemples de code en ruby ou des tutoriaux qui expliquent un peu la programmation en ruby sur linux?
C'est la même que sous windows ...
La seule différence est le shebang en début de fichier mais il n'est pas obligatoire tu peut continuer a lancer tes programme comme sous windows
ruby truc.rb
[^] # Re: suite
Posté par Jean B . En réponse au journal Perl, Javouille, Lisaac|(Ruby|SmallTalk|etc..). Évalué à 2.
Yes they can !
-->[]
Plus sérieusement oui, même si la syntaxe sera bien plus éloignée du SQL.
Mais vu qu'on peut faire des SELECT avec for, des FROM avec in, des JOIN avec +, des WHERE avec if, etc.
On peut même le faire en évaluation paresseuse avec les moins connues genexp.
[^] # Re: Explicit is better than implicit.
Posté par Jean B . En réponse au journal Perl, Javouille, Lisaac|(Ruby|SmallTalk|etc..). Évalué à 2.
pourquoi se trimbaler "self" dans la définition d'une méthode d'un objet ?
Ok, explicit better gnia gnia gnia
Le programme / les développeurs sont trop con pour savoir qu'une méthode qui se trouve dans la définition d'un objet est lié à un objet ?
Ca pue surtout le modèle objet un peu foiré ça...
C'est un héritage du modèle objet de en:Modula-3.
Il y a effectivement pas mal de langages ou il est implicite, mais bien souvent ça entretient une confusion sur son statut, ses possibilités, ...
Au moins en Python les choses sont claires, l'instance est un argument comme les autres (on peut le nommer toto si ça nous chante).
Voir self/this comme un argument est très pratique pour exploiter pleinement l'héritage multiple par exemple:
class Foo(object):
def bar(self, arg0):
print self, arg0
foo = Foo()
foo.bar('baz')
# <__main__.Foo object at 0x7f22d6d0aef0> baz
Foo.bar(1)
# TypeError: unbound method bar() must be called with Foo instance as first argument (got str instance instead)
Foo.bar(foo, 'baz')
# <__main__.Foo object at 0x7f22d6d0aef0> baz
class Qux(object):
def bar(self, arg0):
print 'Qux !'
class Fum(Foo, Qux):
pass
Fum().bar('egg')
# <__main__.Fum object at 0x7f22d6bfa7d0> egg
class Fum(Foo, Qux):
def bar(self, *args, **kwargs):
return Qux.bar(self, *args, **kwargs)
Fum().bar('egg')
# Qux !map(Foo.bar, [Fum()] * 2, ['egg', 'spam'])
# <__main__.Fum object at 0x7f22d6c5c490> egg
# <__main__.Fum object at 0x7f22d6c5c490> spam
Et tu peut même intervenir dans l'autre sens quand tu commence à taper dans les __new__ et autres __metaclass__.
[^] # Re: Pourquoi le cas des CC ?
Posté par Jean B . En réponse au journal Deezer et législation.. Évalué à 3.
La critique viens plutôt AHMA d'un problème de factorisation.
Exemple cette combo box qui est copiée 3 fois en dur dans le script:
<code>
<combobox>
<variable>mgenre</variable>
<item>Blues</item>
#snip 150 lignes
<item>Trip-Hop</item>
<item>Vocal</item>
</combobox>
</code>
Ou encore ceci:
<code>
if [ "$search" = "Deezer" ]; then
{
#Conversion des espaces en url html et autres charactères spéciaux
mquery=$(echo $query | sed -e 's/ /%20/g' | sed -e 's/[éèêë]/e/g' | sed -e 's/à/a/g' | sed -e 's/[ôö]/o/g' | sed -e 's/ù/u/g' | sed -e 's/ç/c/g')
##Lancement de firefox
firefox http://www.deezer.com/#music/result/all/$mquery 2>/dev/null &
}
elif [ "$search" = "Imeem" ]; then
{
##Recherche à effectuer sur imeem
#Conversion des espaces en url html et autres charactères spéciaux
mquery=$(echo $query | sed -e 's/ /%20/g' | sed -e 's/[éèêë]/e/g' | sed -e 's/à/a/g' | sed -e 's/[ôö]/o/g' | sed -e 's/ù/u/g' | sed -e 's/ç/c/g')
##Lancement de firefox
firefox http://www.imeem.com/tag/$mquery/music/ 2>/dev/null &
}
elif [ "$search" = "Les 2" ]; then
{
#Conversion des espaces en url html et autres charactères spéciaux
mquery=$(echo $query | sed -e 's/ /%20/g' | sed -e 's/[éèêë]/e/g' | sed -e 's/à/a/g' | sed -e 's/[ôö]/o/g' | sed -e 's/ù/u/g' | sed -e 's/ç/c/g')
##Lancement de firefox
firefox http://www.deezer.com/#music/result/all/$mquery 2>/dev/null &
firefox http://www.imeem.com/tag/$mquery/music/ 2>/dev/null &
}
fi
</code>
Ne pense tu pas que répéter 3 fois mquery est un peut dommage ? Ne serait il pas mieux placé avant le case ? Ou alors en faire une fonction "urlecode" par exemple.
Enfin n'importe quoi mais éviter ces copier collé.
Rien d'horrible mais je pense que les 1K lignes de ce script pourrait fondre comme neige au soleil, et surtout que la partie interface mériterait d'être séparée ce qui rendrait le tout bien plus maintenable.
[^] # Re: Python c'est super !
Posté par Jean B . En réponse au journal Perl, Javouille, Lisaac|(Ruby|SmallTalk|etc..). Évalué à 2.
[^] # Re: javascript
Posté par Jean B . En réponse au journal Perl, Javouille, Lisaac|(Ruby|SmallTalk|etc..). Évalué à 3.
Pourquoi multiples valeurs de retours voudrais dire pas de contrôles des types ?
Il est vrai que je ne connais pas de langage implémentant les deux concepts, mais rien n'empêche de le faire:
public final (int, String) foobar(String foo) {
// snip
}
[^] # Re: T'as tout compris
Posté par Jean B . En réponse au journal Perl, Javouille, Lisaac|(Ruby|SmallTalk|etc..). Évalué à 2.
re.match
renvoie un "matchobject" si il arrive a appliquer le motif sinon None.Il faut donc stocker le résultat et le tester pour éviter d'appeler la méthode "group" sur None.
Par contre si tu n'a qu'un seul résultat et que tu est certaind e l'avoir sans ce cas tu peut faire :
import re
print re.match(r"(\d+).*", line).group(1)