ruby学习笔记(3)--语法层面的先见之明
时间:2022-04-23
本文章向大家介绍ruby学习笔记(3)--语法层面的先见之明,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
看了几天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"};
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 微信小程序实战开发四:小程序获取用户信息流程及信息存储方式解析
- python 自动化测试(6):jar包调用
- 微信小程序实战开发五:使用自定义组件配置一个通用的图片轮播组件。
- 亿级流量系统如何玩转 JVM
- 微信小程序实战开发六:使用weui-flex创建一个可自由配置的布局组件。
- JDBCJava连接MySql数据库
- Python中的集合
- Centos7下误删python2和yum的解决办法
- Java正则表达式匹配日期及基本使用
- VM虚拟机中linux centOS 联网单网卡配置教程
- Python操作redis数据库
- pytest 测试框架学习(1):初识
- 爬虫工程师也应该会的 NodeJS 知识(三)- 快速抛弃 execjs
- 八皇后问题Python实现
- 进击吧!Pythonista(6/100)