2013-05-06 317 views
-1

我需要檢查的方法的第三個參數:紅寶石方法參數

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

但是我一直沒有能夠獲得正確的語法。有什麼建議麼?

+4

我們無法知道backupType的對象是什麼,所以不能給出很好的爲你解答。此外,在ruby中,作爲一個強大的約定,您應該使用小寫的方法名稱,並使用下劃線來表示變量名稱而不是駱駝大小寫。 – fotanus 2013-05-06 15:56:30

+0

backupType是一個字符串。謝謝你的建議! – fixdrift 2013-05-06 16:01:39

+1

對於'mkdir'操作,您可能想要使用[FileUtils](http://www.ruby-doc.org/stdlib-1.9.3/libdoc/fileutils/rdoc/FileUtils.html),而不是在貝殼。 – tadman 2013-05-06 16:06:54

回答

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的投入;因爲我認爲這不是你想要的。

+0

對不起,我忘了格式化! – bigtunacan 2013-05-06 16:04:54

+0

感謝您的解釋。你的假設是正確的 – fixdrift 2013-05-06 16:30:59

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在評論使得命名慣例很好的建議,但要保證一致性,我已經把名稱相同的答案。

+0

是的,backupType是一個字符串。 – fixdrift 2013-05-06 16:02:29

+1

爲什麼要在字符串上使用'.eql?'?這不是'bash'。 – tadman 2013-05-06 16:05:06

+0

壞習慣。我會改變它。 – jason328 2013-05-06 16:05:32

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