屬於一個數組,我通常要檢查的東西,如:如何檢查對象在Ruby中
if ['Bob','Mary','John'].include? @user.name
有寫類似的方式:
if @user.name.in? ['Bob','Mary','John']
謝謝您。
屬於一個數組,我通常要檢查的東西,如:如何檢查對象在Ruby中
if ['Bob','Mary','John'].include? @user.name
有寫類似的方式:
if @user.name.in? ['Bob','Mary','John']
謝謝您。
的Rails 3.1已經得到了這個Object.in?
方法
characters = ["Konata", "Kagami", "Tsukasa"]
"Konata".in?(characters) # => true
character = "Konata"
character.in?("Konata", "Kagami", "Tsukasa") # => true
太棒了,地板!謝謝。 – AdamNYC 2012-03-31 14:44:29
如果@user.name
是String
,您可以將in?
加到String
。
class String
def in? a
a.include? self
end
end
這具有以下作用:
irb(main):011:0> 'Bob'.in? ['Bob','Mary','John']
=> true
irb(main):012:0> 'Jane'.in? ['Bob','Mary','John']
=> false
謝謝。我希望Rails有一個奇蹟的方法來爲任何類做這個,但似乎並非如此。 – AdamNYC 2012-03-31 14:17:36
@phogratos:你爲什麼要將你的解決方案限制爲'String'?您可以將其添加到「對象」。那麼你可以使用'6.in?([1,2,])'。或者是在另一個對象中? – knut 2012-03-31 14:27:26
@knut:的確,你也可以擴展Object,但你永遠無法確定是否在其他地方使用了in?。所以我建議限制猴子補丁到特定的類。 – phlogratos 2012-03-31 14:34:24
你能告訴爲什麼第一線並不適合你?或者你只是想知道實現這一目標的不同方式? – afaf12 2012-03-31 13:59:58
我認爲第一種方式並不自然(Ruby想避免的)。 – AdamNYC 2012-03-31 14:03:13