2012-06-19 69 views
0

任何人都可以告訴我嗎?哪些呢下面的Ruby程序是指:紅寶石中的以下內容是什麼意思?

obj = myClass.new 
(Err("Error: Can't get myClass instance"); exit) if obj == nil 

在此先感謝

+0

你到底不清楚什麼? –

+0

上述代碼中的第二個陳述。它能做什麼? – BSalunke

+2

注意:應該重構代碼(可能使用'unless'),用'''連接命令通常被認爲是不好的風格。您還可以將'Err'重構爲一些也退出腳本的方法,現在您可以簡單地寫入:'obj = myClass.new或error(「無法獲得myClass實例」)。 – tokland

回答

1
# 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永遠不會返回零。如果它在你的應用程序中,那麼你有更復雜的代碼。這一個不是你最大的問題:)

+1

那麼它是否意味着在執行Err()函數之前執行「if」條件? – BSalunke

+0

@BSalunke:是的,正好 –

+0

@SergioTulentsev想象你已經重載了'新'並且擁有一個單身課程。另外想象一下,除非已經調用了初始化方法(或其他先決條件已滿足),否則new將返回nil。不要說這是做到這一點的最佳方式,但至少這是有道理的。 –

0

這意味着Err("Error: Can't get myClass instance")被調用,其次是exit如果objnil

在ruby中,您可以編寫如下語句:(code) if (expression)

3

這相當於:

obj = myClass.new 
if obj == nil 
    Err("Error: Can't get myClass instance") 
    exit 
end 

我個人用我上面顯示版本,我認爲這是更具可讀性。

+1

+1。我會使用'除非obj'而不是'if',但是有很多方法可以做同樣的事情(比如'if obj.nil?'等等)。 :) –