2011-03-25 20 views
25

有一噸的我需要添加是否有紅寶石單行「return if x」?

if this_flag 
    return 
end 

可以說與紅寶石一行來完成的地方?

+6

爲什麼在問之前不要測試這個呢?使用'irb'和周圍的東西,你可以和可以用Ruby做的:) – DJTripleThreat 2011-03-25 17:38:57

+3

@DJTripleThread:使我想創建「讓我爲你的IRB」。 – 2011-03-27 22:33:26

+1

對於喜歡上述兩者的玩家,請注意下面提供的答案的絕佳範圍,突出顯示紅寶石的力量(而不是抱怨一個顯而易見的答案是顯而易見的)。這就是SO的力量,這就是爲什麼我永遠不會爲問一個「明顯」的問題而道歉。 – jpwynn 2016-02-28 18:44:18

回答

75

是否有紅寶石單線「return if x」?

是:

return if x 

我喜歡紅寶石:-)

+3

我也在那裏......只是知道他們會有一個捷徑! – jpwynn 2011-03-25 17:44:53

6

一些補充約爾格W¯¯米塔格的很好的答案:

x && return 
x and return 
if x then return end 

其實我並不建議前兩種形式但是,上述例子都是有效的作品。我個人更喜歡避免return - 大多數Ruby中的語法結構都是可用的表達式。

快樂編碼。

4

Ruby總是返回最後的東西...爲什麼不只是以不同的方式構造代碼?

def returner(test)  
    "success" if test 
end 

無論你上一次做什麼都會返回。我愛Ruby。

+1

+1。只是爲了澄清:在這種情況下,將返回'nil'。 – 2011-03-25 18:57:45

+1

是的,方法定義將返回'nil'。 但是,調用該方法將返回不同的東西...取決於。 'returner(true)'=>''成功'' 'returner(false)'=>'nil' – Ryanmt 2011-03-25 20:13:16

1

創建一個方法來檢查預期的類類型 下面的示例。方法check_class只要找到正確的類就會返回true。 如果您出於任何原因可能需要擴大不同類別的數量,該功能很有用。

def check_class(x) 
    return true if is_string(x) 
    return true if is_integer(x) 
    # etc etc for possible class types 
    return false # Otherwise return false 
end 

def is_string(y) 
    y.is_a? String 
end 

def is_integer(z) 
    z.is_a? Integer 
end 


a = "string" 
puts "#{check_class(a)}"