2013-05-06 5 views
-1

Je dois vérifier le troisième paramètre d'une méthode:arguments de la méthode Ruby

def NFS(configsHash, optionsHash, backupType) 

Je veux utiliser une instruction if pour vérifier le chemin où backupType doit être sauvé. Quelque chose comme:

If #{backupType} == "dir/file/path/name/time" 
    STDOUT.puts("Backup will be saved to current folder.") 
else 
    STDOUT.puts("Putting into backup folder") 
    STDOUT.puts(mkdir #{backups}) 

Mais je n'ai pas réussi à obtenir la bonne syntaxe. Aucune suggestion? fait d'excellentes suggestions sur les conventions de nommage

+4

nous ne pouvons pas savoir quel objet backupType est, ne peut donc pas donner une bonne réponse pour vous. De même, dans ruby, en tant que convention forte, vous devriez utiliser les noms de méthodes en minuscules, et utiliser des soulignements pour les noms de variables au lieu de chameau. – fotanus

+0

backupType est une chaîne. Merci pour le conseil! – fixdrift

+1

Pour les opérations 'mkdir', vous voulez probablement utiliser [FileUtils] (http://www.ruby-doc.org/stdlib-1.9.3/libdoc/fileutils/rdoc/FileUtils.html) plutôt que de défoncer coquille. – tadman

Répondre

1
if backupType == "dir/file/path/name/time" 
    puts "Backup will be saved to current folder." 
else 
    puts "Putting into backup folder" 
    Dir.mkdir "path/goes/here" 
end 

Notez que STDOUT a été déposé. C'est redondant. Si vous faites STDOUT.puts.object_id et puts.object_id, vous verrez qu'ils se réfèrent aux mêmes choses. Notez également que c'est Dir.mkdir; pas seulement mkdir; il doit être appelé sur la classe Dir.

Modifié pour être un peu plus idiomatique. J'ai également laissé tomber les puts de Dir.mkdir; comme je suppose que ce n'est pas vraiment ce que vous vouliez.

+0

Désolé j'ai oublié de le formater! – bigtunacan

+0

Merci pour l'explication. Vous avez raison dans votre hypothèse – fixdrift

1
# Assuming that backupType is a string 
if backupType == "dir/file/path/name/time" 
    print "Backup will be saved to current folder." 
else 
    print "Putting into backup folder" 
    # This part below is tricky since I don't know what the backups variable is referring to 
    print Dir.mkdir backups 
end 

@fotanus dans les commentaires, mais pour assurer la cohérence que j'ai gardé les noms de même pour la réponse.

+0

Oui, backupType est une chaîne. – fixdrift

+1

Pourquoi utiliser '.eql?' Sur une chaîne de caractères? Ce n'est pas 'bash'. – tadman

+0

Mauvaise habitude. Je vais le changer. – jason328

2

Vous pouvez aussi aller avec ceci:

case backupType 
when "dir/file/path/name/time" 
    puts("Backup will be saved to current folder.") 
else 
    puts("Putting into backup folder") 
    puts(Dir.mkdir backups) 
end 
Questions connexes