ruby1.8到2.1语法改变
1定义hash的语法改变
old_way = {:foo => "bar", :one => 1}
new_way = {foo: "bar", one: 1}
2 方法中传递hash
def some_method(hash = {})
# do stuff
end
some_method(:foo => "bar")
some_method(foo: "bar")
3 hash中key做参数
# OLD
def old_way(options={})
return options[:foo]
end
old_way(:foo => "bar") # => "bar"
old_way #=>nil
# NEW UNNAMED KEYWORD ARGUMENTS
def new_way(**options)
return options[:foo]
end
# => :new_way
new_way(foo: "bar" ) # => "bar"
new_way b# => nil
hash中的key可以作为默认的方法参数
# NEW NAMED KEYWORD ARGUMENTS
def new_way(foo:)
return foo
end
# => :new_way
new_way(foo: "bar") # => "bar"
new_way # ArgumentError: missing keyword: foo
定义proc的新语法
old_way = Proc.new { |a, b| a + b }
old_way.call(1, 2)
# => 3
new_way = ->(a, b) { a + b }
new_way.call(1, 2)
# => 3
生成符号数组
old_way = [:foo, :bar, :baz]
new_way = %i(foo bar baz)
定义有理数方法
old_way = Rational(6, 5)
new_way = 1.2r
关键字参数
def foo(a, b="b_default", *c, d:, e: "e_default", **f, &g)
# do stuff
end
a: 必须有的参数
b:可选的参数有一个默认值
c: 通常接受多个参数存为数组
d: 关键字参数
e:关键字参数有默认值
f:接收参数存为hash
g:块参数
ruby1.8到2.1语法改变的更多相关文章
- html5语法改变
<!doctype html> 简化了 <meta http-equiv="Content-type" content="text/html;chars ...
- 改变CSS样式
改变CSS样式 1.改变HTML元素样式的语法 //改变HTML样式的语法 document.getElementById(id).style.property = new style 例子: < ...
- Swift3.0语法变化
写在前面 首先和大家分享一下学习新语法的技巧:用Xcode8打开自己的Swift2.3的项目,选择Edit->Convert->To Current Swift Syntax- 让Xcod ...
- Java和Scala语法比较
类型推断 挑逗指数: 四星 我们知道,Scala一向以强大的类型推断闻名于世.很多时候,我们无须关心Scala类型推断系统的存在,因为很多时候它推断的结果跟直觉是一致的. Java在2016 年也新增 ...
- 使用Flexbox:新旧语法混用实现最佳浏览器兼容
Flexbox非常的棒,肯定是未来布局的一种主流.在过去的几年这之中,语法改变了不少,这里有一篇“旧”和“新”新的语法区别教程(如果你对英文不太感兴趣,可以移步阅读中文版本).但是,如果我们把Flex ...
- swift与OC之间不得不知道的21点
swift与OC之间不得不知道的21点 自6月的WWDC大会上由苹果的大神Chris Lattner向我们首次展示swift至今已经大半年时间了,虽然绝大部分软件公司代码里还都见不到一丁点swif ...
- Swift2.3 --> Swift3.0 的变化
Swift3.0语法变化 首先和大家分享一下学习新语法的技巧: 用Xcode8打开自己的Swift2.3的项目,选择Edit->Convert->To Current Swift Synt ...
- 【转】Python3.x和Python2.x的区别
这个星期开始学习Python了,因为看的书都是基于Python2.x,而且我安装的是Python3.1,所以书上写的地方好多都不适用于Python3.1,特意在Google上search了一下3.x和 ...
- Python3.x和Python2.x的区别
1.性能 Py3.0运行 pystone benchmark的速度比Py2.5慢30%.Guido认为Py3.0有极大的优化空间,在字符串和整形操作上可 以取得很好的优化结果. Py3.1性能比Py2 ...
随机推荐
- java_linear list
1.线性表的顺序存储结构,类似ArrayList package collectionsFramework.linearlist; import java.util.Arrays; /** * @Pa ...
- PostgreSQL: Query for location of global tablespace?
Q: I have been trying to make our database clients pro-active about not filling up the partition on ...
- Linux体系结构(二): Linux系统层次
前一节内容大概介绍了一下Linux的历史由来,各大Linux发行厂商都是基于GNU项目下的所有开源软件,来构建各自己的Linux发行版本,一个完整的Linux发行版本大概可以分为以下四个层次结构: ...
- ASP.NET MVC内置的Filter实现介绍
有时候你想在调用action方法之前或者action方法之后处理一些逻辑,为了支持这个,ASP.NET MVC允许你创建action过滤器.Action过滤器是自定义的Attributes,用来标记添 ...
- unity, 保存prefab时material丢失问题
在程序运行时用replacePrefab(gameObj,prefab)或createPrefab(gameObj,prefab)保存prefab,遇到保存出来的prefab中material丢失的问 ...
- OpenJudge计算概论-称体重【枚举法、信息数字化】
/*====================================================================== 称体重 总时间限制: 1000ms 内存限制: 655 ...
- mysql导出查询结果到csv方法
要将MySQL的查询结果导出为csv,一般会使用php连接mysql执行查询,将返回的查询结果使用php生成csv格式再导出. 但这样比较麻烦,需要服务器安装php才可以实现. 直接使用mysql导出 ...
- ORACLE 常用日期函数
1 . add_months(arg1,num) 返回日期arg1加num个月的新日期. select add_months(date'2011-1-1',1) from dual; result: ...
- R(二): http与R脚本通讯环境安装
结合实际的工作环境,在开始R研究的时候,首先着手收集的就是能以Web方式发布R运行结果的基础框架,无耐的是,R一直以来常使用于个人电脑的客户端程序上,大家习惯性的下载R安装包,在自己的电脑上安装 -- ...
- Hibernate 抓取策略fetch-2 (批量抓取batch-size以及hibernate.jdbc.fetch_size、hibernate.jdbc.batch_size)
类关系: User N~1 Group 测试代码: System.out.println("1"); List stuList = session.createQuery(&quo ...