在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
看了几天ruby,发现c#中很多一直被称道的语法特性,ruby早在几年前就有了: 1.c#中的params关键字 class Program { static void Main(string[] args) { Console.WriteLine(Sum()); Console.WriteLine(Sum(3,6)); Console.Read(); } static int Sum(params int[] nums) { int _result = 0; foreach (int item in nums) { _result += item; } return _result; } } 对应的ruby版本: def sum(*num) numSum = 0 num.each { |i| numSum+=i } return numSum end puts sum() puts sum(3,6) 2.c#中的缺省参数(据说从4.0才开始支持,但ruby早就有了) def sum( a, b=5 ) a+b end puts sum(3,6) puts sum(3) 3.c#中的匿名方法 List<int> lst = new List<int>() { 1, 2, 3, 4, 5 }; lst.ForEach((i) => { Console.WriteLine(i); }); ruby中的类似语法: (1..5).each{|x| puts x} 4.c#中的delegate与action class Program { static void Main(string[] args) { Action<string> a = new Action<string>(HelloWorld); a("jimmy"); Console.ReadKey(); } static void HelloWorld(string name) { Console.WriteLine("hello,{0}", name); } } ruby中的类似语法: def action(method,name) #相当于c#中的action声明部分 method.call(name) end helloWorld = proc{|name| puts "hello,#{name}"} #被action调用的方法体 action(helloWorld,"jimmy"); #通过action,调用helloWorld方法,输出 hello,jimmy 5.c#中的扩展方法 class Program { static void Main(string[] args) { int[] arr = new int[] { 1, 2, 3, 4, 5 }; arr.NewMethod(); Console.ReadKey(); } } public static class ExtendUtils { public static void NewMethod(this Array arr) { foreach (var item in arr) { Console.WriteLine(item); } } } ruby中的扩展方法更强大: class Array def NewMethod for i in 0...size yield(self[i]) end end end arr = [1,2,3,4,5] arr.NewMethod{|x| print x ,"\n"}; puts "*******************************" arr.NewMethod{|x| print x * x ,"\n"}; |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论