2012-05-29 61 views
6

我喜歡Ruby的一件事是您可以用盡可能最短的方式表達事物。Ruby中的「return x if x」的速記

我知道,一個可以做的,分配

x ||= a 
# instead of 
x = a unless x 
# which is 
x = x || a 

時是否有return模擬形式?

# instead of 
return x if x 

我試圖「說」x只有一次。 This question問只是返回(沒有),但我不知道如何去返回除void之外的東西。

+0

用簡單的'x'替換'return x if x'有什麼問題? – Zabba

+2

@Zabba這不一定是最後的聲明 –

+3

也許我的數學技能已經惡化,但是不是你已經有了一個單行? –

回答

4

我只是對某些不存在任何簡寫爲您的第二個例子,也不可能一個可以無需修改寫入的Ruby語法,因爲它不是一個足夠常見的成語。對不起,兄弟,但它看起來你將不得不在這一個冗長。 (但是,儘管詳細程度如此,但這並不全是壞事。)

(也請注意,第一個示例並不完全正確:x ||= a相當於x = x || a,它也可以是表示爲x = a unless x。)

+1

你說得對,我只是糾正它。既然你「只是一定」,我會稍微等一下,承認這是答案,除非別人有。所以'答案=你的;答案|| = new_answer',或者我應該說'如果new_answer返回new_answer;你的;';) –

-1

如果它是塊代碼中的最後一條語句,則可以省略返回值。

例如

irb(main):002:0> def b(c) 
irb(main):003:1> c if c 
irb(main):004:1> end 
=> nil 
irb(main):005:0> b(4) 
=> 4 
irb(main):006:0> b(nil) 
=> nil 
irb(main):007:0> b(true) 
=> true 
irb(main):008:0> b(false) # TADA!!! 
=> nil 
+0

如果這是我最後的陳述,我可以肯定省略'return',但我的意圖是隻說'c'一次。而就我而言,我想要掩蓋非最後的言論! –

相關問題