解析.NET程序員 Ruby核心語(yǔ)法入門(4)_.Net教程

      編輯Tag賺U幣
      教程Tag:暫無(wú)Tag,歡迎添加,賺取U幣!

      推薦:關(guān)于URL的傳遞字符串問題的研究
      前幾天在調(diào)程序的時(shí)候遇到了比較郁悶的問題,我用URL從一個(gè)頁(yè)面?zhèn)鬟f字符串到另一個(gè)頁(yè)面的時(shí),出現(xiàn)了個(gè)奇怪的問題,我要傳遞的字符串是“DK51 700中繼站”;可是另一個(gè)頁(yè)面接收到

      Ruby中的所有事物都是對(duì)象,所有對(duì)象都是類的實(shí)例,為了探索類是個(gè)什么東西,在它上面調(diào)用類函數(shù):

      5.class
      => Fixnum
      (2 ** 96).class
      => Bignum
      7.5.class
      => Float
      (1..10).class
      => Range
      "foo".class
      => String
      /^foo[a-e]$/.class
      => Regexp
      :foo.class
      => Symbol
      [].class
      => Array
      {}.class
      => Hash

      塊和閉包

      雖然這與.NET 1.X中的事件處理程序類似,但當(dāng)你想處理它們時(shí)還是必須要定義完整的類函數(shù)來(lái)連接這些事件,這就導(dǎo)致需要?jiǎng)?chuàng)建大量的類函數(shù),因?yàn)榭蚣苄枰?/p>

      .NET 2.0引入了匿名委派的概念,它們起的作用與Ruby中的塊類似,如:

      irb(main):001:0> h = {:foo=>'bar', :hi=>'there'}
      => {:foo=>"bar", :hi=>"there"}
      irb(main):002:0> h.each_key {|k| puts k}
      foo
      hi
      => {:foo=>"bar", :hi=>"there"}
      irb(main):003:0> h.each {|k,v| puts "#{k}: #{v}"}
      foo: bar
      hi: there
      => {:foo=>"bar", :hi=>"there"}

      正如你所看到的,Ruby中塊的語(yǔ)法是相當(dāng)簡(jiǎn)潔的:通常使用一對(duì)大括號(hào)打開塊和關(guān)閉塊,使用|x,y|語(yǔ)法標(biāo)出傳遞給塊的變量。

      Ruby中的塊和閉包類似,正如.NET 2.0中的匿名委派,這意味著它們有權(quán)訪問它們封裝作用域的值,即使那個(gè)作用域退出后也可以訪問。下面是一個(gè)將幾個(gè)值相乘的閉包示例:

      irb(main):004:0> n = [5, 6, 10]
      => [5, 6, 10]
      irb(main):005:0> t = 1
      => 1
      irb(main):006:0> n.each { |i| t *= i }
      => [5, 6, 10]
      irb(main):007:0> t
      => 300

      你甚至可以將引用存儲(chǔ)在塊中,方便以后使用,如:

      irb(main):008:0> t = 1
      => 1
      irb(main):009:0> f = lambda { |i| t *= i }
      => # 函數(shù)Ruby中函數(shù)的定義比.NET簡(jiǎn)單多了,因?yàn)椴恍枰付愋停纾?/p>

      irb(main):001:0> def greet(name)
      irb(main):002:1> puts "Hello, #{name}!"
      irb(main):003:1> end
      => nil
      irb(main):004:0> greet "Reader"
      Hello, Reader!
      => nil
      irb(main):005:0> greet 42
      Hello, 42!
      => nil

      分享:.NET Framework 3.5 SP1正式版
      微軟今天發(fā)布了.NET Framework 3.5第一個(gè)SP服務(wù)包的最終版.這是一個(gè)累積更新,包含很多基于.NET Framework 2.0、3.0和3.5不斷生成的新功能,此外還包括.NET Framework 2.0 SP2和.NET Framewo

      來(lái)源:模板無(wú)憂//所屬分類:.Net教程/更新時(shí)間:2009-08-02
      相關(guān).Net教程