亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Ruby塊和不帶括號的參數

Ruby塊和不帶括號的參數

泛舟湖上清波郎朗 2019-08-28 15:30:09
Ruby塊和不帶括號的參數我提取了簡單的例子:require 'pp'x = 1..3pp x.map do |i| {:value => i, :double => (i*2)} endpp x.map { |i| {:value => i, :double => (i*2)} }pp(x.map do |i| {:value => i, :double => (i*2)} end)pp(x.map { |i| {:value => i, :double => (i*2)} })我想知道為什么第一個pp產生:[1, 2, 3]所有的演講者都在給予:[{:value=>1, :double=>2}, {:value=>2, :double=>4}, {:value=>3, :double=>6}]我認為它與運算符優先級有關。我在哪里可以找到好的解釋?
查看完整描述

2 回答

?
慕村225694

TA貢獻1880條經驗 獲得超4個贊

這是因為你在打電話

pp x.map

并將一個塊傳遞給pp(忽略它)

正如編程Ruby書中所解釋的那樣

大括號具有很高的優先級; 確實有一個低優先級

因此,有效地,大括號綁定到最接近它們的函數調用(x.map),而綁定到最遠的(pp)。這有點簡單,但它應該解釋這種情況

查看完整回答
反對 回復 2019-08-28
?
慕尼黑8549860

TA貢獻1818條經驗 獲得超11個贊

在此帖子中使用Ruby-2.2.0的pry會話的部分日期。pp_hash = x.map do | i | {:value => i,:double =>(i * 2)} end => [{:value => 1,:double => 2},{:value => 2,:double => 4},{ :value => 3,:double => 6}] pp_hash.join(“,”)“{:value => 1,:double => 2},{:value => 2,:double => 4}, {:value => 3,:double => 6}“這在今天的Json用法中可能更為理想,但這只是對輸出讀取的風格問題。有時,只要您的代碼可以處理正確的類型,您將要傳遞哪一個并不重要。pp_hash = pp_hash.join(“,”)

查看完整回答
反對 回復 2019-08-28
  • 2 回答
  • 0 關注
  • 640 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號