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

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

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

    如鵬網 大學生計算機學習社區

    CowNew開源團隊

    http://www.cownew.com 郵件請聯系 about521 at 163.com

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      363 隨筆 :: 2 文章 :: 808 評論 :: 0 Trackbacks

    1、map的聲明方法:
     m={"1"=>"3","2"=>"aa"}
    2、if count>10
         ....
       elsif c<3
       else
        ...
       end
    3、while c<3
       ...
       end
    4、正則表示式方法:
    /d3/
    有match等方法
    判斷字符串的匹配:
    if line=~/Perl|Python/
       ...
    替換:
    line.sub(/Perl/,'Ruby')將第一個Perl替換成Ruby
    line.gsub(/Perl/,'Ruby')將所有Perl替換成Ruby
    5、block的使用:
     as = ["2","66"]
    as.each{|a|print a}
    6、變量的作用域:@成員變量,@@類變量,$全局變量
    7、
    class Person
      def initialize(name,age)
        @name = name
        @age = age
      end
      def say()
        print "我叫"+@name
        print "#@age"
      end
    end

    p = Person.new("tom",20)
    p.say()
    print p.inspect#反射顯示對象的內容
    8、類方法與類變量:
    class Person
      @@count = 0
      def Person.doIt
      end
    end
    9、數組的子數組:
    a=[1,2,3,5]
    a[1..3]→[2,3,5]
    切片
    a=[1,2,3,5]
    a[0..2]=[4]
    a→[4,5]
    10、for語句:
    for i in 0..100
       print i
    end
    11、block:
    def a
      for i in 0..100
        yield i
      end
    end

    a{|f|puts f}
    帶返回值的block:
    def a
      for i in 1..100
        if yield i
          puts "接受"+i.to_s
        end
      end
    end

    a{|v|v>90}

    應用強大的block:
    m={}
    (1..100).each{|a| m[a]=a**a}
    m.each{|a|puts a}
    12、block與變長參數:
    class FileProcess
      def FileProcess.process(*args)
        f = File.open(*args)
        yield f
        f.close()
      end
    end

    FileProcess.process("c:/boot.ini","r"){
      |file|
      while line=file.gets
        puts line
      end
    }
    另一種用法:
    FileProcess.process("c:/boot.ini","r") do |file|
      while line=file.gets
        puts line
      end
    end
    13、閉包:
    class MyClass
      def initialize(&action)
        @action = action
      end
      def begin()
        for i in 1..100
          if i>90
            @action.call(self)
          end
        end
      end
    end

    a = MyClass.new(){puts "超限"}
    a.begin()

    lambda:
    a = lambda{|n| puts n}
    a.call(3)
    14 數字:
    6.times{|i|puts i}
    1.upto(5){|i| puts i}
    50.step(100,10){|i| puts i}
    15 轉化
    a="33"
    b="55"
    puts Integer(a)+Integer(b)
    puts a.to_i+b.to_i
    puts a*3
    16 字符串中內嵌ruby表達式
    puts "He#{'l'*100}o"
    puts "1+1=#{1+1}"

    city = "peking"
    y=2008
    puts "#{city}-#{y}"
    注意只有用雙引號括起來的才支持內嵌表達式
    17 puts "2005|03|08".split(/\|/)
    18 Range
    ('a'..'f').each{|c| puts c}
    Range轉化為數組:puts ('a1'..'a9').to_a
    19 返回bool的方法通常以?結尾,修改對象狀態的方法以!結尾
    20 自定義復數:
    class FuNum
      def initialize(shi,xu)
        @shi=shi
        @xu=xu
      end
     
      def xu
        @xu
      end
      def shi
        @shi
      end
      public :shi,:xu
     
      def +(other)
        newshi = @shi+other.shi
        newxu = @xu+other.xu
        return FuNum.new(newshi,newxu)
      end 
     
      def to_s()
        return "#{@shi}+#{@xu}i"
      end
    end

    i = FuNum.new(1,2)
    j = FuNum.new(2,9)
    puts i+j
    21 交換兩個變量(并行賦值):
    a=20
    b=30
    c=40
    a,b,c=c,b,a

    print a,b,c
    python也支持
    22 Case語句:
    a=1
    salary=case a
          when 0..100 then 3000
          when 101 then 333
          else 888
          end
         
    puts salary
    Case語句的When部分還支持正則表達式
    case line
    when /title=(. )/
    puts"Titleis#$1"
    when/track=(. )/
    puts"Trackis#$1"
    when/artist=(. )/
    puts"Artistis#$1"
    end
    23 異常處理
    begin
      raise "33333333"
    rescue RuntimeError
      #$!表示異常信息
      print $!
      #再次拋出
      raise
    end

    begin
      raise "33333333"
    rescue RuntimeError
      #$!表示異常信息
      print $!
      #再次拋出
    ensure
      print "無論如何都被打印"
    end

    還可以在rescue中調用retry來重新執行程序塊
    24 模塊
    CowNew.rb模塊文件
    module CowNew
      PI = 3.14
      def CowNew.calc(r)
        return 2*PI*r
      end 
    end

    調用者Main.rb
    require "CowNew"
    puts CowNew.calc(3)
    從文件加載模塊:
    load "E:/greeninst/eclipse3.2.2/eclipse/workspace/r/CowNew.rb"
    25 文件處理:
    f = "E:/greeninst/eclipse3.2.2/eclipse/workspace/r/CowNew.rb"
    puts IO.read(f)
    puts IO.readlines(f)

    逐行處理:
    f = "E:/greeninst/eclipse3.2.2/eclipse/workspace/r/CowNew.rb"
    i=IO.foreach(f){|line| puts line}

    f = "E:/greeninst/eclipse3.2.2/eclipse/workspace/r/CowNew.rb"
    i=0
    IO.foreach(f) do |line|
      i=i+1
      print i,"  ",line
    end
    26 流:STDOUT<<33<<"adfa"
    27 Ruby專用Http服務器,支持eruby,免得使用Apache,調試方便:
    require "webrick"
    include WEBrick
    server = HTTPServer.new(:DocumentRoot=>"E:/俺的文檔/個人資料/網站安全/cownew空間/")
    server.start()

    在目錄web下創建rhtml文件,增加服務器:
    require "webrick"
    include WEBrick
    server = HTTPServer.new(:DocumentRoot=>File.join(Dir.pwd,"web"))
    server.start()
    自定義Servlet:
    require "webrick"
    include WEBrick

    class HelloServlet<HTTPServlet::AbstractServlet
       def do_GET(req,res)
         res["Content-Type"] = "text/html"
         res.body="aaaaaaaaa"
       end
    end
    server = HTTPServer.new(:DocumentRoot=>File.join(Dir.pwd,"web"))
    server.mount("/hello",HelloServlet)
    server.start()

     

    posted on 2007-08-02 20:09 CowNew開源團隊 閱讀(418) 評論(0)  編輯  收藏

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


    網站導航:
     
    主站蜘蛛池模板: 成人特黄a级毛片免费视频| 日本二区免费一片黄2019| 99久久免费精品高清特色大片| 成年人在线免费看视频| 中文字幕亚洲无线码a| 亚洲人成网国产最新在线| 免费萌白酱国产一区二区三区| 日本牲交大片免费观看| 亚洲国产成人久久精品软件 | 在线永久免费观看黄网站| 亚洲国产日韩综合久久精品| 色老头永久免费网站| 亚洲中文字幕无码日韩| 久久美女网站免费| 亚洲国产综合久久天堂| 亚洲精品无AMM毛片| 国产一级一片免费播放| 亚洲天然素人无码专区| 2021在线永久免费视频| 国产精品亚洲成在人线| 午夜在线免费视频 | 国产免费阿v精品视频网址| 香蕉蕉亚亚洲aav综合| 美女无遮挡拍拍拍免费视频 | 亚洲s色大片在线观看| 亚洲高清免费视频| 免费大香伊蕉在人线国产| 内射少妇36P亚洲区| 中国一级全黄的免费观看| 亚洲国产免费综合| 日韩欧美亚洲中文乱码| 国产成在线观看免费视频| 亚洲成aⅴ人片在线影院八| 亚洲视频免费在线观看| 亚洲一区二区三区日本久久九| 国产成人精品免费视频网页大全| 亚洲国产精品无码久久九九大片| 精品亚洲一区二区三区在线播放| 国产裸体美女永久免费无遮挡| 亚洲天天做日日做天天看| 91青青国产在线观看免费|