Ruby方法参数

时间:2013-05-06 15:52:47

标签: ruby if-statement

我需要检查方法的第三个参数:

def NFS(configsHash, optionsHash, backupType)

我想使用if语句来检查要保存backupType的路径。类似的东西:

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})

但我无法正确使用语法。有什么建议吗?

3 个答案:

答案 0 :(得分:2)

你也可以这样做:

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

答案 1 :(得分: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在评论中对命名约定提出了很好的建议,但为了确保一致性,我保持名称相同的答案。

答案 2 :(得分: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

请注意,STDOUT已被删除。这是多余的。如果您执行STDOUT.puts.object_id和puts.object_id,您将看到它们引用相同的内容。另外,请注意它是Dir.mkdir;不仅仅是mkdir;它需要在Dir类上调用。

修改为更加惯用。我也放弃了来自Dir.mkdir的投注;因为我认为这不是你想要的。