任何人都可以告訴我嗎?哪些呢下面的Ruby程序是指:紅寶石中的以下內容是什麼意思?
obj = myClass.new
(Err("Error: Can't get myClass instance"); exit) if obj == nil
在此先感謝
任何人都可以告訴我嗎?哪些呢下面的Ruby程序是指:紅寶石中的以下內容是什麼意思?
obj = myClass.new
(Err("Error: Can't get myClass instance"); exit) if obj == nil
在此先感謝
# create instance of a class with non-standard name.
obj = myClass.new
# call function Err and exit if myClass.new returned nil
(Err("Error: Can't get myClass instance"); exit) if obj == nil
我發現這個代碼混亂。在正常情況下,new
永遠不會返回零。如果它在你的應用程序中,那麼你有更復雜的代碼。這一個不是你最大的問題:)
那麼它是否意味着在執行Err()函數之前執行「if」條件? – BSalunke
@BSalunke:是的,正好 –
@SergioTulentsev想象你已經重載了'新'並且擁有一個單身課程。另外想象一下,除非已經調用了初始化方法(或其他先決條件已滿足),否則new將返回nil。不要說這是做到這一點的最佳方式,但至少這是有道理的。 –
這意味着Err("Error: Can't get myClass instance")
被調用,其次是exit
如果obj
是nil
。
在ruby中,您可以編寫如下語句:(code) if (expression)
。
這相當於:
obj = myClass.new
if obj == nil
Err("Error: Can't get myClass instance")
exit
end
我個人用我上面顯示版本,我認爲這是更具可讀性。
+1。我會使用'除非obj'而不是'if',但是有很多方法可以做同樣的事情(比如'if obj.nil?'等等)。 :) –
你到底不清楚什麼? –
上述代碼中的第二個陳述。它能做什麼? – BSalunke
注意:應該重構代碼(可能使用'unless'),用'''連接命令通常被認爲是不好的風格。您還可以將'Err'重構爲一些也退出腳本的方法,現在您可以簡單地寫入:'obj = myClass.new或error(「無法獲得myClass實例」)。 – tokland