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

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

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

    關于groovy的一些用法


    最近使用groovy寫了一個程序生成器,因為公司原來的生成程序太原始了,直接是JSP調我們自已的業務中間件的,新生成后的程序采用了spring的框架,用到的技術主要是groovy+Template,寫的過程中也碰到了一些問題,解決后希望與大家共享.具體關于如何使用groovy以及用groovy進行模板編程,請查看IBM上的實戰groovy系列的文章.
    1.在模板文件中是不能使用閉包的,使用后可能會造成分析器的混亂.
    2.正則表達式用法之大小寫.
    一般我們使用java時都這么寫

    Pattern?pattern? = ?Pattern.compile(
    ????????????
    " Y\\s*E\\s*C\\s*X\\s* " ,?Pattern.CASE_INSENSITIVE);

    以第二參數來指明不區分大小寫,在使用groovy我發現,這招不靈了,因為在groovy中正則表達式是在語言中的
    def pattern = ~/(?i)(.*)/這樣就得到了一個pattern,如果要指定不區分大小寫,與perl,ruby語言有些不同,查jdk官方方檔得知,如上代碼加(?i)就OK了.
    注意:在groovy中可以這樣寫

    def ?matcher = ? " string " ? =~ ?pattern

    此時的pattern為串,而不能是正則表達式.
    3.java中的匿名類與groovy中的閉包
    生成程序難免要碰到與目錄相關的操作程序,一般在java中文件過濾都這么寫

    String?regex? = ? " .*查詢.*\\.ini " ;
    ????????
    final ?Pattern?pattern2? = ?Pattern.compile(regex,Pattern.CASE_INSENSITIVE);????
    ????????
    ????????File?path?
    = ? new ?File( " C:\\mydir " );
    ????????String[]?list?
    = ?path.list( new ?FilenameFilter()? {
    ????????????
    public ? boolean ?accept(File?dir,?String?name)? {
    ????????????????
    return ?pattern2.matcher( new ?File(name).getName()).matches();
    ????????????}

    ????????}
    ?);

    查遍所有groovy文檔發現并沒有直接使用閉包來完成以上程序,在groovy中用閉包代替內部類的只能用在swing類中那些listener的接口,具體細節查看官方文檔.http://groovy.codehaus.org/Groovy+Beans
    要用groovy來完成上面的程序有兩種方法,第一就是用java完成后,提供給groovy來調用,第二下直接用groovy實現,其實很簡單,代碼如下:

    def ?filter( def ?filelist){
    ?????????
    def ?col = []
    ????????filelist.each{
    ????????????
    if (it =~ " .*\\.ini " )
    ????????????????col
    << it
    ????????}
    ????????
    return ?col
    ????}

    def ?filterfile( def ?filedir, def ?fileName){
    ????????
    def ?ffile? = ?new?File(filedir,fileName)
    ????????????????
    def ?fileNames? = ?filter(ffile.list())
    ????????
    if ((?fileName? =~ ' \\d{3} ' ).matches())
    ????????????fileName?
    = ? " I${fileName} "
    ????????createSrc(fileNames,ffile,fileName)
    ????}

    主要由兩個函數完成,第一個過濾,第二個匹配.

    posted on 2006-09-16 09:38 The One 閱讀(1036) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    <2006年9月>
    272829303112
    3456789
    10111213141516
    17181920212223
    24252627282930
    1234567

    導航

    統計

    常用鏈接

    留言簿(3)

    隨筆檔案(11)

    相冊

    我的郵箱

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 免费A级毛片无码专区| 一个人免费日韩不卡视频| 成年在线观看免费人视频草莓| 亚洲va无码手机在线电影| 大地资源网高清在线观看免费| 亚洲性在线看高清h片| 一本到卡二卡三卡免费高| 亚洲国产精品狼友中文久久久| 黄色网址在线免费观看| 亚洲精品国产精品国自产观看| www成人免费观看网站| 国产亚洲精品一品区99热| 国产一级淫片a免费播放口| 亚洲精品天天影视综合网| 18禁男女爽爽爽午夜网站免费| 亚洲国产成AV人天堂无码| 免费视频中文字幕| 日韩一级片免费观看| 久久精品国产亚洲AV网站| 久久成人国产精品免费软件| 亚洲色最新高清av网站| 亚洲AV成人潮喷综合网| 大地资源中文在线观看免费版| 亚洲成人黄色在线| 国产一级高清免费观看| 巨胸狂喷奶水视频www网站免费| 西西人体44rt高清亚洲| 日本免费网址大全在线观看 | 亚洲av无码专区国产乱码在线观看| 国产精品免费大片| 亚洲情A成黄在线观看动漫软件| 国产午夜鲁丝片AV无码免费| 中国videos性高清免费| 亚洲冬月枫中文字幕在线看| 亚洲成人一区二区| 最好看的中文字幕2019免费| 国产成人亚洲精品91专区高清| 亚洲Av无码精品色午夜| 免费无码又爽又刺激高潮| 最近的2019免费中文字幕| 国产99在线|亚洲|