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 ...
随机推荐
- python模块结构和布局
用模块来合理的组织你的python代码是简单又自然的方法.下面介绍一种非常合理的布局: #(1)起始行(Unix) #(2)模块文档 #(3)模块导入 #(4)变量定义 #(5)类定义 #(6)函数定 ...
- asp.net之ajax
ajax主要的作用是无刷新的情况进行提交. 常用于客户端组件信息的提交.服务器组件在asp.net中能够正常的提交,而html组件则不能正常提交,在此情况下,就可以采用jquery的方式进行数据的异步 ...
- 005. asp.net页面常用指令
页面指令 用于通知编译器在编译该页面时做出什么样的处理方式, 欢聚换来讲, 页面指令指定了执行该页面的运行时环境, 当编译器处理应用程序时, 可以通过这些指令来让编译器做特定的处理; 在asp.ne ...
- C#颜色和名称样式对照表
1 Color.AliceBlue 240,248,255 Color.LightSalmon 255,160,122 Color.AntiqueWhite 250,235,215 Color.L ...
- C#子线程刷新界面并关闭窗体
目的:要循环刷新界面上的控件,同时不影响用户操作.循环结束后关闭窗体. 步骤:先创建一个窗体,窗体中拖入一个lable控件(label1),一个button控件(button1) 代码窗口输入: // ...
- eclipse中java文件报错:The type java.lang.Object cannot be resolved. It is indirectly referenced from required .class files
问题:The type java.lang.Object cannot be resolved. It is indirectly referenced from required .class fi ...
- WCF学习心得------(六)数据协定
--前言 最近各种事忙的把之前的WCF学习给耽误了一些,今天抽时间把之前的学习内容给总结了一下,因为知识点比较细碎没有做太多的练习示例,只是对其中关键的知识点做了总结,希望可以对大家有所帮助. 第六章 ...
- 关于今天mysql数据库的一系列问题
首先,字符集的问题: mysql> show variables like 'character%';+--------------------------+------------------ ...
- 理解和配置 Linux 下的 OOM Killer
原文:http://www.vpsee.com/2013/10/how-to-configure-the-linux-oom-killer/ 最近有位 VPS 客户抱怨 MySQL 无缘无故挂掉,还有 ...
- CentOS 7.0 安装中文输入法
这是个蛋疼的问题 1.Applications -- System Tools -- Setting -- Regin & Language 2.input source -- + -- mo ...