我喜歡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之外的東西。
我喜歡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之外的東西。
我只是對某些不存在任何簡寫爲您的第二個例子,也不可能一個可以無需修改寫入的Ruby語法,因爲它不是一個足夠常見的成語。對不起,兄弟,但它看起來你將不得不在這一個冗長。 (但是,儘管詳細程度如此,但這並不全是壞事。)
(也請注意,第一個示例並不完全正確:x ||= a
相當於x = x || a
,它也可以是表示爲x = a unless x
。)
你說得對,我只是糾正它。既然你「只是一定」,我會稍微等一下,承認這是答案,除非別人有。所以'答案=你的;答案|| = new_answer',或者我應該說'如果new_answer返回new_answer;你的;';) –
如果它是塊代碼中的最後一條語句,則可以省略返回值。
例如
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
如果這是我最後的陳述,我可以肯定省略'return',但我的意圖是隻說'c'一次。而就我而言,我想要掩蓋非最後的言論! –
用簡單的'x'替換'return x if x'有什麼問題? – Zabba
@Zabba這不一定是最後的聲明 –
也許我的數學技能已經惡化,但是不是你已經有了一個單行? –