![](/img/trans.png)
[英]Ruby on Rails / HAML image_path not working in else condition?
[英]Condition in ruby on rails - if else
我不太確定這是什么意思。 這是來自控制器類中的 Ruby on Rails,並試圖找出下面代碼的作用。
payload = if params.key? :data
//do something
else
//else do something
end
這是在控制器類中。 params.key? :data
params.key? :data
呢?
data
變量不存在於整個類中,而只存在於該塊中。
:data
不是變量而是符號。
.key?
是一種方法,在 ruby 中你不需要括號來傳遞參數,例如:data
。
所以這段代碼詢問params
是否有符號:data
作為鍵(在映射中)並使用返回的布爾值作為條件。
在此代碼段中, data
不是變量,而是符號文字。 Java 沒有與 Ruby 的符號 AFAIR 直接對應的對象,但您可以將其視為一些不可變的標識符(有點像“不可變的字符串,帶有一些額外的很酷的屬性,這些屬性在我們這里討論的上下文中無關緊要”)。
接下來, params
表示查詢參數,由底層中間件提供。 它是一種類似於 Hash 的數據結構,其中Hash
是 Java 的HashMap
的 Ruby 對應物,用於將鍵映射到值。
接下來, params.key? :data
params.key? :data
與params.key?(:data)
相同 - 在大多數情況下,方法參數周圍的括號在 Ruby 中是可選的,人們傾向於濫用這個有爭議的特性。 它只是檢查params
hash(map) 是否包含:data
鍵(參見Hash#key? )。
最后,由於 Ruby 中的一切都是表達式, if... else... end
有一個有意義的返回值(特定分支執行的結果),該值進一步分配給payload
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.