<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    gr8vyguy@Blogjava

    Groovy讀書筆記4

    Closure

    Use Cases for Closures
       
        separating iteration logic from what to do on each iteration

        handling resources, 
            open
            do the job   // in a closure, as parameter
            close

    Implicit Variable of Closure
        
        it                     default parameter

        this                enclosing class
        owner           enclosing object, class or closure
        delegate       same as owner, but changeable 

    closure without parameters
       { -> ... }

    closure with one parameter
       { ... }, { x -> ... }

    Scope of a closure

       a closure must remember original context frame. it is closed under declaration context.

    Return from a closure or method
      
      end return
          the value of  last expression is returned.

      prematurely return with return keyword

    Groovy Control Structure

    Groovy Truth

       Boolean Test: evaluate an expression to be true or false
       
       any non-void type can be evaluated as Boolean.
            to be true
                  non empty, non zero, non null

    Typo, forget a =
      
       if(x = 1) is not allowed in groovy.

      if(1 == x) is safe than if(x == 1)

    Loop
      an object can be iterable.

    assert
      
      如果沒有assert, code一樣產生夠用的錯誤信息,那么就不需要assert

      assert can clarify the code intents. runnable comment!

    Return Value

      method with void do not return a value
      closure always return a value, null if no value

    OO in Groovy

    dynamic, object oriented and scripting

    classes and scripts definition

    script’s binding 
        undeclared variable

        transfer variables between Script and Calller

    default visibility of fields ==> property definition

    default visibility of methods ==> public

    Reference a field

        Class and Map has some similiarity.

        obj.field
        obj[’field’]

        override get and set methods

    Parameter Type
       
      optional, if not specified, then means Object.

    Groovy’s method dispatch
       GroovyObject.invokeMethod(name, params[])

    Safe dereferencing with ?. operator

        protected from NPE

        null?.foo()   no foo called, return null

    Constructor

        called by 
            1. new ClassName(...)
            2. as with list
            3. implicit coercion with list, implicit construction

        named parameters for default constructor
            available if no constructor is defined

    Type aliasing

           import ... as ..

    Typing

         Interface

         Design by Contract

         Duck Typing, Dynamic Typing, checked by tests

    Multimethods

        method look up take the dynamic type of arguments into account.

        method dispatch at run time(Groovy) or compile time(Java)

    GroovyBeans

        obj.property mapped to obj.getProperty() or obj.setProperty(value) method

    dot-@ operator

        obj.@field access directly the field

    event in groovy bean

       btn.actionPerformed = { ... }

       groovy通過bean introspection確定是否為添加一個Listener,如果是, 生成一個ClosureListener,
       a proxy implementation of the required listener interface,調用后面的closure,添加

    GPath

          objs.p1,p2*.p3

    Spread Operator *

         *list 打散

    mix-in with use

        dynamic 增加method

        use(category) {
              ....
        }

       category中定義static methods, use后, method的第一個argument的類得到一個新的method

    Groovy's Meta-Object Protocoll(MOP)

    how Groovy performs its magic?
          interception points

    All classes programmed in Groovy are constructed by the GroovyClassGenerator, such that it implements GroovyObject interface.

    Method Dispatching

         this.invokeMethod()
         getMetaClass().invokeMethod()
         MetaClassRegistry.getMetaClass(this.class).invokeMethod()

    Usability

        intercept
        relay
        pretend


    posted on 2007-12-20 07:48 gr8vyguy 閱讀(841) 評論(0)  編輯  收藏 所屬分類: Java

    <2007年12月>
    2526272829301
    2345678
    9101112131415
    16171819202122
    23242526272829
    303112345

    導航

    統計

    公告

  • 轉載請注明出處.
  • msn: gr8vyguy at live.com
  • 常用鏈接

    留言簿(9)

    隨筆分類(68)

    隨筆檔案(80)

    文章分類(1)

    My Open Source Projects

    搜索

    積分與排名

    最新評論

    主站蜘蛛池模板: 亚洲精品无码成人片久久不卡| 亚洲?V乱码久久精品蜜桃 | 国产成人精品亚洲日本在线| 成人片黄网站A毛片免费| 美女视频黄视大全视频免费的| 亚洲精品国产字幕久久不卡| 性做久久久久久免费观看| 野花香在线视频免费观看大全 | 97国产在线公开免费观看| 特级毛片aaaa免费观看| 日韩国产欧美亚洲v片 | 秋霞人成在线观看免费视频 | 亚洲视频在线观看免费视频| 免费国产黄网站在线看| 久久国产亚洲精品| 亚洲第一二三四区| 亚洲成人福利网站| 亚洲欧洲日本国产| 亚洲成无码人在线观看| 亚洲日本在线看片| 亚洲国语在线视频手机在线| 久久亚洲熟女cc98cm| 亚洲高清日韩精品第一区| 91亚洲国产在人线播放午夜| 亚洲国产综合专区电影在线| 亚洲av午夜成人片精品网站 | 99免费视频观看| 猫咪免费人成网站在线观看| 18未年禁止免费观看| 免费看又爽又黄禁片视频1000| 卡一卡二卡三在线入口免费| 国产aa免费视频| 国产黄色一级毛片亚洲黄片大全| 亚洲愉拍99热成人精品热久久| 日韩精品亚洲aⅴ在线影院| 亚洲一卡2卡三卡4卡有限公司| 亚洲中字慕日产2020| 伊人久久国产免费观看视频| 国产精品区免费视频| 国产一级特黄高清免费大片| 久久亚洲一区二区|