自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Rails參數(shù)binding概念講解

開發(fā) 開發(fā)工具
我們?cè)趹?yīng)用Rails參數(shù)binding時(shí),會(huì)返回一個(gè)叫做Binding對(duì)象的實(shí)例,我們可以使用Rails參數(shù)binding返回綁定的值。

Ruby on Rails開發(fā)框架被我們用來實(shí)現(xiàn)簡單的代碼編寫。在Ruby中,有許多參數(shù)值得我們?nèi)ド钊胩接?。比如本文介紹Rails參數(shù)binding的相關(guān)內(nèi)容。#t#

eval方法有一個(gè)可選的參數(shù)--binding,如果為指定的話,那么表達(dá)式的值就會(huì)是一個(gè)具體的范圍或上下文環(huán)境綁定。不過不必為這個(gè)有所意外,Rails參數(shù)binding會(huì)返回一個(gè)Binding對(duì)象的實(shí)例,可以使用binding方法返回綁定的值。下是是ruby文檔中提供的一個(gè)示例:

  1. def getBinding(str)   
  2. return binding()   
  3. end   
  4. str = "hello"   
  5. puts( eval( "str + ' Fred'" ) ) 
    #=
    > "hello Fred"   
  6. puts( eval( "str + ' Fred'", 
    getBinding("bye") ) ) #=
    > "bye Fred"   
  7. def getBinding(str) return binding() 
    end 
    str = "hello" puts( eval( "str + ' 
    Fred'" ) ) #=
    > "hello Fred" puts
    ( eval( "str + ' Fred'", getBinding
    ("bye") ) ) #=
    > "bye Fred"  

 

Rails參數(shù)binding是內(nèi)核的一個(gè)私有方法。getBinding方法通過調(diào)用binding方法返回當(dāng)前上下文環(huán)境中str的值。在***次調(diào)用 eval方 法的時(shí)候,當(dāng)前上下文環(huán)境是main對(duì)象,并且str的值就是定義的局部變量str的值。

在第二次調(diào)用eval方法是,當(dāng)前的上下文環(huán)境則是 getBinding方法內(nèi)部,局部變量str的值現(xiàn)在則為getBinding方法中參數(shù)str的值。Binding方法經(jīng)常作為eval的第二個(gè)參 數(shù),這樣eval就不會(huì)因?yàn)檎也坏阶兞慷鲥e(cuò)了。

上下文環(huán)境也可以在類中定義。在下面的例子中,可以看到,實(shí)例變量@mystr和類變量@@x根據(jù)類而不同:

  1. class MyClass   
  2. @@x = " x"   
  3. def initialize(s)   
  4. @mystr = s   
  5. end   
  6. def getBinding   
  7. return binding()   
  8. end   
  9. end   
  10. class MyOtherClass   
  11. @@x = " y"   
  12. def initialize(s)   
  13. @mystr = s   
  14. end   
  15. def getBinding   
  16. return binding()   
  17. end   
  18. end   
  19. @mystr = self.inspect   
  20. @@x = " some other value"   
  21. ob1 = MyClass.new("ob1 string")   
  22. ob2 = MyClass.new("ob2 string")   
  23. ob3 = MyOtherClass.new("ob3 string")   
  24. puts(eval("@mystr << @@x", 
    ob1.getBinding)) #=
    > ob1 string x   
  25. puts(eval("@mystr << @@x", 
    ob2.getBinding)) #=
    > ob2 string x   
  26. puts(eval("@mystr << @@x", 
    ob3.getBinding)) #=
    > ob3 string y   
  27. puts(eval("@mystr << @@x", 
    binding)) #=
    > main some other value  

Rails參數(shù)binding的概念就為大家介紹到這里了。

責(zé)任編輯:曹凱 來源: 博客園
相關(guān)推薦

2010-02-03 17:42:33

C++模板參數(shù)

2009-12-14 15:30:43

安裝Ruby on R

2009-12-16 15:41:10

Ruby on Rai

2009-12-16 17:37:31

Ruby on Rai

2009-12-16 16:24:00

Ruby on Rai

2009-12-17 16:16:24

Rails方法send

2009-12-17 15:42:25

Rails自定義Hel

2009-12-16 16:44:31

Ruby on Rai

2009-10-23 18:47:35

GNULinux

2011-07-21 15:28:30

java

2010-06-03 18:32:51

Hadoop

2010-07-02 10:04:36

2012-02-15 13:19:04

JavaJava Socket

2015-08-11 09:41:58

AndroiddataBinding

2009-10-27 16:47:58

linux vi編輯器

2009-10-27 09:26:26

linux系統(tǒng)監(jiān)控命令

2013-01-10 16:12:02

Ruby on Rai漏洞

2010-06-10 14:56:18

UML建模語言

2010-08-25 17:05:41

DHCP服務(wù)器

2010-02-04 10:08:00

C++靜態(tài)成員函數(shù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)