簡體   English   中英

ruby on rails 中的條件 - if else

[英]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? :dataparams.key?(:data)相同 - 在大多數情況下,方法參數周圍的括號在 Ruby 中是可選的,人們傾向於濫用這個有爭議的特性。 它只是檢查params hash(map) 是否包含:data鍵(參見Hash#key? )。

最后,由於 Ruby 中的一切都是表達式, if... else... end有一個有意義的返回值(特定分支執行的結果),該值進一步分配給payload

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM