Ruby 板


LINE

※ 引述《contagious (漂移胖)》之銘言: : ※ 引述《godfat (godfat 真常)》之銘言: : : 騙人,明明就可以,而且也沒有 __send, __send!, send! : : 所以現在是維持 1.8 不改? : 它寫的是 doesn't "always" : 在 1.8 裡的行為是..如果你用 bar.send(:foo) : 如果 bar 裡有 public 的 foo 也有 private 的 foo ,會用 private 的 foo 嗯...翻了一下討論串,看到有人指出為什麼 foo.bar 和 foo.send :bar 會是不同的情況...(連 matz 一開始都覺得可能是 bug...) http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/153723 也就是說,foo.bar 看不到 private method, 所以會 invoke method_missing; 然而,foo.send :bar 看得到, 所以如果有個 foo 有個 private method :bar, 則 foo.send :bar 會 invoke 該 method 而非 method_missing. 原發問者提出了個 workaround: http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/153749 透過 eval 來達成看不到 private method 的 send... 嗯,這恐怕確實是個滿大的問題,但我測試現在手上的 ruby 1.9, 行為還是跟 ruby 1.8 一致,也沒有上述提到的幾個 send!, __send, __send! 其實 ruby 裡有不少一致性很低,例外很多的狀況,我覺得實在不是個好現象。 有點像是為了便利妥協,但是造成不少意外... 希望以後可以有更高的一致性,不要老是有奇怪的意外 edited: 更正,根據這篇: http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/153828 fcall 可以呼叫 private method, 而 send 不可以。 但是現行的 ruby 1.9 似乎是相反, send 看得到 private method, 而 fcall 看不到 :D 以後要改用 fcall 了... 暴力 send 則用 __send__ 吧 edited2: 但 fcall 的行為和一般 method_missing 又不一樣 :( msg 會是 fcall, 而原本的 msg 則成為 args.first... def method_missing msg, *args puts msg, args.join end 這樣還是不行啊 -_-b edited3: 昏倒,有夠詭異,新 class 有 send!, __send, __send!, 而內建的 Fixnum, String, 都沒有... 可能 std lib 還沒更新? 而且說詞正好全部相反,反而是 send!, __send, __send!, fcall 看不到 private. 而且每個對 method_missing 都是有問題的... 看來 ruby 1.9 xmas 恐怕是來不及,頂多來個 beta 吧... --   『風車』が廻り続ける度に 『美しき』幻想が静かに紡がれ    『焔』の揺らめきの外に 『腕』を伸ばす愚かな者達 -《Roman》5th Story  『宝石』をより多く掴もうと 『朝と夜』の狭間を彷徨い続ける Track 10   『星屑』の砂の煌めきにも 『葡萄酒』の仄甘い陶酔を魅せ 黄昏の賢者 『賢者』が忌避する檻の中から 『伝言』の真意を彼等に問うだろう   『天使』が别れを告げし時 『地平線』は第五の物語を識る --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.135.28.18 ※ 編輯: godfat 來自: 220.135.28.18 (12/08 16:58)
1F:推 Tiberius:這篇好像看出不少 Ruby 跟 Python 的想法差異 ... XD 12/08 18:13
2F:推 godfat:Python 我不太熟,可以講講嗎? :p 12/08 19:11







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:iOS站內搜尋

TOP