比較C#中的委託和Ruby中的block對象

來源:互聯網
上載者:User

Ruby中,所謂帶塊(block)的方法是指對控制結構的抽象,最初設計是用於對迴圈進行抽象,所以又稱迭代器。
文法:method_name do...end 或 method_name {}

 

 1#塊調用
 2def foo
 3  print yield(5)
 4end
 5
 6foo {|a|
 7    if a > 0
 8        "positive"
 9    elsif a < 0
10        "negative"
11    else
12        "zero"
13    end
14}
15
16foo()
17
18#使用了proc(過程對象)的塊調用
19quux = proc {|a|
20    if a > 0
21        "positive"
22    elsif a < 0
23        "negative"
24    else
25        "zero"
26    end
27}
28
29def foo(p)
30    print p.call(5)
31end
32
33foo(quux)

 

 1//傳統委託
 2public delegate string fooDelegate(int a);
 3public string foo(int a)
 4{
 5    if(a > 0)
 6        return "positive";
 7    else if(a < 0)
 8        return "negative";
 9    return "zero";
10}
11fooDelegate myD1 = new fooDelegate(foo);
12Console.WriteLine(myD1(5));
13
14//匿名委託
15public delegate string fooDelegate(int a);
16fooDelegate myD1 = delegate(int a)
17{
18    if(a > 0)
19        return "positive";
20    else if(a < 0)
21        return "negative";
22    return "zero";
23}
24Console.WriteLine(myD1(5));
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.