<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)

    相冊

    我的郵箱

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 99re热免费精品视频观看| 99在线免费视频| 亚洲免费在线视频播放| 亚洲第一区香蕉_国产a| 玖玖在线免费视频| 亚洲成人激情在线| 四虎成人精品永久免费AV| 亚洲综合一区二区精品导航| 无码日韩精品一区二区三区免费 | 久久久精品午夜免费不卡| 亚洲精品一级无码中文字幕| 亚洲美免无码中文字幕在线| 成人性生交大片免费看好| 中文字幕专区在线亚洲| 一级毛片高清免费播放| 亚洲男女内射在线播放| 国产免费一级高清淫曰本片| 久久久久无码专区亚洲av| 一本到卡二卡三卡免费高| 区三区激情福利综合中文字幕在线一区亚洲视频1 | 亚州**色毛片免费观看| 暖暖日本免费在线视频| 亚洲va中文字幕| 日本特黄特色aa大片免费| 羞羞漫画小舞被黄漫免费| 一本色道久久88综合亚洲精品高清| 亚洲精品乱码久久久久久蜜桃图片| 国产三级在线观看免费| 最新国产精品亚洲| 免费一级毛片女人图片| 免费无码专区毛片高潮喷水| 国产精品亚洲mnbav网站| WWW免费视频在线观看播放| 国产亚洲综合成人91精品| 国产精品免费福利久久| 亚洲成人免费电影| 无码永久免费AV网站| 美女又黄又免费的视频| 免费看大黄高清网站视频在线| 亚洲中文字幕久久精品无码A| 欧亚精品一区三区免费|