在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/Ruby/ 這段ruby代碼什么意思

這段ruby代碼什么意思

最近在研究elk,需要嵌入ruby代碼,還望有懂ruby的幫下忙,解釋一下,謝謝了!

就是解釋以下下面這兩種 每一部分 代表什么就好了。

    //第一種
    xx "xxx" do
    
    end
    //第二種
    xx("xxx") do |xx|
    
    end

原代碼如下

test "drop percentage 100% " do
       
        parameters do
                {"percentage"=>1}
        end

        in_event {{"message"=>"bonjour bonjour","date"=>"2018-2-2"}}

      
        expect("drops the event") do |events|
                puts "-------->expect"
                events.size == 0
        end
end
回答
編輯回答
紓惘

這段代碼是一個(gè)單元測(cè)試,解釋大概如下:

parameters do
  {"percentage"=>1}
end

這段代碼的意思是,parameters是一個(gè)不帶參數(shù)的函數(shù),這個(gè)函數(shù)可以跟一個(gè)代碼塊,也就是do...end這部分,嵌入到函數(shù)里yield部分執(zhí)行操作,比如這里就將一個(gè)賦值操作給了parameters函數(shù)。

這個(gè)yield怎么用呢?請(qǐng)看下面這個(gè)例子:

# 定義函數(shù)test
def test
  puts '1'
  yield # 這里提供給代碼塊執(zhí)行
  puts '3'
end
test do
  puts '2' #代碼塊具體執(zhí)行內(nèi)容
end

然后輸出1、2、3

同理,

expect("drops the event") do |events|
  puts "-------->expect"
  events.size == 0
end

這里是一個(gè)帶參數(shù)的函數(shù),后面接了一個(gè)代碼塊,函數(shù)是expect目的是為了做一個(gè)測(cè)試的斷言,參數(shù)“drops the event”是這個(gè)斷言的描述——希望拋掉所有的events,然后函數(shù)可以在yield的時(shí)候給一個(gè)參數(shù),讓代碼塊使用yield(events),比如這里將events拿出來(lái),代碼塊來(lái)判定這個(gè)events.size為0。

這個(gè)expect函數(shù)大概是這樣定義的:

def expect(describe)
  events = [] # 做一個(gè)操作將events清空
  result = yield(events) # 將events作為參數(shù),拿給外面的代碼塊
  if result == true
    puts '斷言成功'
  else
    puts '斷言失敗'
  end
end

你看具體使用的時(shí)候,代碼塊判定了events.size == 0,然后這個(gè)結(jié)果true在expect函數(shù)里賦值給了result,expect函數(shù)繼續(xù)往下執(zhí)行。

另外,代碼塊不止是do...end和do |unit| ... end,這里了in_event后面的{...}也是代碼塊,代碼塊的內(nèi)容是{"message"=>"bonjour bonjour","date"=>"2018-2-2"}這個(gè)哈希,另外還有種代碼塊的使用是{|unit|...}。也就是,你可以把左大括號(hào)看成do,把右大括號(hào)看成end。

希望能幫助到你。

2018年8月21日 15:30