study

发布新日志

  • ruby中的hash(转载)

    2010-11-15 17:10:13

     数组和Hash对象是统一的,数组只是Hash对象的一种表现形式,Hash对象里包含的元素的key是任意的,而数组里所包含的key是连续的,而且只能够使整数,在同一hash中,索引键必须唯一

    Hash对象里的元素都是由两部分组成:key和value两个部分
    Hash对象是由一些列在花括号里面的key-value对组成,多个key-value对之间以英文逗号隔开,key和value之间由"=>"隔开,最后一个逗号会被省略

    a={"zhansa"=>40,"lisi"=>20,"wangwu"=>25}
    p a;
    p a["zhansa"]
    p a["lisi"]
    结果
    {"wangwu"=>25, "lisi"=>20, "zhansa"=>40}
    40
    20

     


    my_hash = Hash.new
    puts "Hash对象的长度"+my_hash.size.to_s
    my_hash["Java"]=5
    p my_hash

    my_hash["Ruby"]="aaaa"
    p my_hash
    输出结果
    Hash对象的长度0
    {"Java"=>5}
    {"Ruby"=>"aaaa", "Java"=>5}

     

     

    Hash对象的常用方法
    length()/size()

    delete(key)

    include?(key)\has_key?(key)\key?\member?  判断指定的Hash对象是否包含特定的key

    keys()

    values()

    b={"zhansa"=>40,"lisi"=>20,"wangwu"=>25}
    p b.length().to_s
    p b.include?("zhansa")
    p b.keys
    p b.values()
    输出值
    "3"
    true
    ["wangwu", "lisi", "zhansa"]
    [25, 20, 40]


    Hash对象的迭代
    Hash对象支持如下4个常用迭代
      each:迭代输出Hash对象里全部项(包括key和value)

      each_key 迭代输出Hash对象里全部key

      each_pair 迭代输出Hash对象里全部key-value对

      each_value 迭代输出Hash对象里全部value

    b={"zhansa"=>40,"lisi"=>20,"wangwu"=>25}
    b.each do |key,value|
      puts "key:"+key+",value:"+value.to_s
    end
    b.each_key do |key|
      puts "key:"+key
    end
    b.each_value do |value|
      puts "value:"+value.to_s
    end
    b.each_pair do |key,value|
      puts "key:"+key+",value:"+value.to_s
    end
    输出结果
    key:wangwu,value:25
    key:lisi,value:20
    key:zhansa,value:40
    key:wangwu
    key:lisi
    key:zhansa
    value:25
    value:20
    value:40
    key:wangwu,value:25
    key:lisi,value:20
    key:zhansa,value:40

  • Win32ole转载

    2010-11-03 10:00:50

    Win32ole为标准Ruby发行版的一部分。Win32ole是访问Windows自动化的接口,可以让Ruby和Windows应用进行交互。具体说来Win32ole可以操作Word,Excel,IE,Outlook等。 


    以下均为代码片段 
    Word 
    创建一个Word文件 
    Ruby代码 
    1. require 'win32ole'    
    2. word = WIN32OLE.new('Word.Application')     
    3. word.visible=true  #是否打开文件  
    4. word.Documents.Add()     
    5. for i in(0..100)     
    6.   word.Selection.Font.Size=12     
    7.   word.Selection.Font.ColorIndex = 2     
    8.   word.Selection.TypeText("Word with Ruby \n")     
    9. end    
    10. word.DefaultSaveFormat     
    11. word.Documents.close()   


    Outlook 
    调用Outlook发送邮件 
    Ruby代码 
    1. require 'win32ole'  
    2. outlook = WIN32OLE('Outlook.Application')  
    3. message = outlook.CreateItem(0)  
    4. message.Subject = 'Subject line here'  
    5. message.Body = 'This is the body of your message.'  
    6. message.To = 'xiaofan2350@yahoo.com.cn'  
    7. message.Attachments.Add('c:\really\one.txt', 1)  
    8. message.Send  


    Excel 
    创建一个Excel文件 
    Ruby代码 
    1. require 'win32ole'  
    2. excel = WIN32OLE.new('Excel.Application')  
    3. book = excel.workbooks.add  
    4. sheets = book.worksheets(1)  
    5. cells = sheets.cells("A1:A5")  
    6. cells.each do |cell|  
    7.   cell.value = 10  
    8. end  


    Ruby代码 
    1. require 'win32ole'     
    2. excel = WIN32OLE.new("Excel.Application")            
    3. excel.Visible = true  #是否打开文件  
    4. excel.WorkBooks.Open("d:\\really.xls")   #打开excel  
    5. worksheet = excel.ActiveWorkbook.WorkSheets(1)     
    6. # Output the sheet count of the current work book.  
    7. rows = worksheet.UsedRange.Rows  #得到excel文件的行数  
    8. worksheet.Range('A1:D1').value = ['North','South','East','West'#往excel指定区域写入数据  
    9. worksheet.Range('A2')['value'] = "really"  
    10. worksheet.Range('B2')['value'] = "notreally"  
    11. worksheet.Range('C2')['value'] = "javaeye"  
    12. worksheet.Range('D2')['value'] = "notreally.javaeye.com"  
    13. excel.ActiveWorkbook.WorkSheets.add({'count'=>1, 'after'=>worksheet})  
    14. #添加一个excel工作区  
    15. excel.ActiveWorkbook.Close  #关闭工作区  
    16. excel.Quit()    


    IE 
    创建一个ie浏览器的实例 
    Ruby代码 
    1. require "win32ole" #包含库  
    2. ie = WIN32OLE.new('InternetExplorer.Application')  
    3. ie.visible = true #这个时候就可以看到一个ie的界面出来了  
    4. ie.navigate('http://www.ask123.net'#转到这个页面  
  • ruby+watir+netbeans安装

    2010-04-11 11:37:53

    安装watir,安装了一个晚上,还是没有安装成功。运行require'watir'时总提示could not load(watir)...最后参考了论坛中亲的安装方法:

    1、ruby安装
       下载 ruby186-27_rc2.exe,安装。 

       选择前面的,最后一个不选   

       在命令行下敲入 ruby -v 显示版本号,则说明OK!
    2、安装ruby的升级包
       下载升级包rubygems-update-1.3.6.gem,然后解开到展开目录rubygems-update-1.3.6.gem下。
       在rubygems-update-1.3.6.gem目录下运行:
        gem update --system

    再运行:
        gem install activesupport

    3、watir的安装

       以1.6.5版本为例,本地安装。

       先建立一个目录XXX,将后面下载的文件放到该目录中,
         下载commonwatir-1.6.5.gem.tar 改名(不是解开,下面也一样)为commonwatir-1.6.5.gem
         下载firewatir-1.6.5.gem.tar 改名为firewatir-1.6.5.gem
         下载watir-1.6.5.gem.tar改名为watir-1.6.5.gem
    4、在目录XXX下执行:
       gem install commonwatir-1.6.5.gem -l
       如果报错误,就试验:gem install commonwatir (我用这个成功)
       执行过程中报生成某个Doc错误,不管他。

    5、继续执行:
      gen install nokogiri
      会报告一些defination找不到之类的错误,不管他

    6、最后执行:
        gem install firewatir-1.6.5.gem -l
        再执行:
        gem install watir-1.6.5.gem -l

    7、安装开发工具:netbeans.

    因为netbeans是基于JAVA的,所以需要先下载一个JAVA JDK。

    下载1.5版本以上就OK。

    下载netbeans.并安装:

    下载地址:

    http://www.netbeans.info/downloads/dev.php  右边栏选择6.7.1,然后进入页面后,选择支持ruby的IDE选项,然后下载就可以了。

    安装完毕后,打开IDE更新需要更新的(与ruby相关的),重启NetBeans。

    8、完毕后执行:
    require 'watir'
    ie = Watir::IE.new
    ie.goto(
    http://www.google.com)
    如果能打开窗口并且可以切换到google,说明安装OK!

Open Toolbar