如何在Ruby中執行以下操作?如何用Ruby中的數組替換字符串參數?
由於傳值參數的原因,它無法按預期工作。
def validate! msg
if msg.is_a?(String)
msg = [ msg ]
end
end
#replace
如果味精正在用另一個字符串替換都可以使用。
如何在Ruby中執行以下操作?如何用Ruby中的數組替換字符串參數?
由於傳值參數的原因,它無法按預期工作。
def validate! msg
if msg.is_a?(String)
msg = [ msg ]
end
end
#replace
如果味精正在用另一個字符串替換都可以使用。
雖然有些類有實例方法允許您對對象進行變異,但不能將對象變爲另一個類。在這種情況下,您不能將String對象變爲Array對象。
如您所知,您的代碼將返回[msg]
如果該消息是一個字符串。否則它將返回零。爲了使該方法總是返回一個數組,你可以使用一個三元像這樣:
def validate! msg
msg.is_a?(String) ? [msg] : msg
end
# ...
my_msg = "message"
my_validated_message = validate!(my_msg) # => ["message"]
my_already_valid_message = ["different message"]
my_revalidated_message = validate!(my_already_valid_message) # => ["different message"]
由於其他答案已經指出的那樣,你不能代替字符串變異成一個陣列。
您可以使用您定義的方法重置指針。但你實際上可以使用#Array做一個:
msg = 'string'
msg = Array(msg)
#=> msg = ['string']
msg = ['array']
msg = Array(msg)
#=> msg = ['array']
你是什麼意思'如何在Ruby中執行以下操作?'?這不是一個紅寶石代碼嗎? – emaillenin
@emaillenin - 我的意思是'msg'沒有更新。我編輯了這個問題。 –
解釋你想要完成的事情。這聽起來有點像你正在試圖讓msg _into_數組。如果是這樣,那麼這是不可能的。有些對象具有可以改變對象的方法,但即使在這些情況下,也不能將對象「變換」爲不同的類。正確的做法是隻使用一個新變量,並將其設置爲'[msg]'。用一種方法做到這一點很好。另外,'String'需要大寫或不能運行。 – Glyoko