ROR id這種用法

2021-08-29 03:47:45 字數 745 閱讀 3076

這是activesupport擴充套件的乙個方法。原**如下:

class symbol

def to_proc

proc.new

endend

它擴充套件出這種用法:

(1..5).map(&:to_s)

map原本是要接受乙個block引數,普通的用法是:

(1..5).map

或者:proc = proc.new

(1..5).map(&proc)

上面這個(1..5).map(&:to_s)用法可以拆成3步來解釋:

sym = :to_s

proc = proc.new

(1..5).map(&proc)

有個疑問,經過yanping.jia解釋,map(&:to_s)因為出現了&符號,所以:to_s會執行to_proc方法,然後與&一起合成&proc交給map處理。雖然說得通,不過我總覺得這個解釋中,&這個符號做了2次工作,是否合理?

這種用法原本是ruby extensions project發明的,在ror中作了點修改。原來的版本是:

class symbol

def to_proc

proc

endend

它使用2個引數來分出乙個引數,而ror版本則使用shift分出來。

剛才又想了一下,yanping.jia的解釋應該是合理的,直譯器看到&:id時,先會判斷是否是乙個方法呼叫,如果是則需要把:id轉成乙個proc。否則就是語法錯誤了。

情懷這種東西

風光無限是你,跌落塵埃也是你,重要的是你,而不是怎樣的你。若我的運氣能幫到你,你全拿去。這一句 你 啟發了給你的加油詩 天官賜福 情懷這種東西不能當飯吃,不能當錢花,不能當面子使,百無一用,卻在某種意義上是一種內生的力量,有了它,生活並沒有陽光明媚,光鮮亮麗,但是沒有它乙個人卻會像乙個洩了氣的皮球,...

這種心態,值得擁有

坦然的心態 幸運不可能永遠降臨於乙個人的頭上,反倒是各種各樣的困難時常陪伴左右。僅僅有以坦然的心態面對一切困難,才不會讓困難毀掉自己的意志,才有希望跳出困境的漩渦。快樂的心態 人生中不順利的事情非常多,自然也就擁有太多的不快樂的理由。以快樂的心態主宰自己的情緒,事情往往產生更加積極的結果。適應的心態...

實習第十四天 seekTo這種用法是錯誤的

在mediaplayer中 有幾個過程都是非同步的,乙個是 prepare過程,乙個是seekto過程,mediaplayer.prepare mediaplayer.seekto millis 或者 mediaplayer.prepareasync mediaplayer.seekto 如果是這樣...