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:块参数

时间: 2024-10-10 22:29:35

ruby1.8到2.1语法改变的相关文章

html5语法改变

<!doctype html> 简化了 <meta http-equiv="Content-type" content="text/html;charset=utf-8"> 改成 <meta charset="utf-8"> 可以省略的结束标记的 li dt dd p option thead tbody tr  td th tr rp optgroup colgroup tfoot 可以省略的全部标记的 ht

使用Flexbox:新旧语法混用实现最佳浏览器兼容

本文由大漠根据Chris Coyier的<Using Flexbox: Mixing Old and New for the Best Browser Support>所译,整个译文带有我们自己的理解与思想,如果译得不好或不对之处还请同行朋友指点.如需转载此译文,需注明英文出处:http://css-tricks.com/using-flexbox,以及作者相关信息 ——作者:Chris Coyier ——译者:大漠 Flexbox非常的棒,肯定是未来布局的一种主流.在过去的几年这之中,语法改

C++11 现代C++风格的新元素--简介

C++11标准推出了很多有用的新特性,本文特别关注那些相比C++98更像是一门新语言的特性,理由是: 这些特性改变了编写C++程序使用的代码风格和习语[译注 1],通常也包括你设计C++函数库的方式.例如,你会看到更多参数和返回值类型为智能指针(smart pointer),同时也会看到函数通过值传递返回大型对象.你将会发现在大多数的代码示例中充斥着新特性的身影.例如,几乎每5行现代C++代码示例都会使用到auto. C++11的其他特性也很棒.但是请先熟悉下面这些,正是由于这些特性的广泛使用使

Python2.x和Python3.x的区别

今天实验<machinelearninginaction>里面的代码,发现有错误,然后才发现使用的Anaconda3运用的,代码是用Python2.7风格的,故记录了解一些主要区别,以后注意! 1.性能 Py3.0运行 pystone benchmark的速度比Py2.5慢30%.Guido认为Py3.0有极大的优化空间,在字符串和整形操作上可 以取得很好的优化结果. Py3.1性能比Py2.5慢15%,还有很大的提升空间. 2.编码 Py3.X源码文件默认使用utf-8编码,这就使得以下代码

【转】Python3.x和Python2.x的区别

这个星期开始学习Python了,因为看的书都是基于Python2.x,而且我安装的是Python3.1,所以书上写的地方好多都不适用于Python3.1,特意在Google上search了一下3.x和2.x的区别.特此在自己的空间中记录一下,以备以后查找方便,也可以分享给想学习Python的friends. 1.性能 Py3.0运行 pystone benchmark的速度比Py2.5慢30%.Guido认为Py3.0有极大的优化空间,在字符串和整形操作上可 以取得很好的优化结果. Py3.1性

HTML5(一)

痛点:以前HTML控件功能单一,必须书写大量JS代码才能完成一些特定组件(比如简单的日历选择框):还有各浏览器厂商对HTML/CSS/JS的支持有差异,前段开发很耗时.HTML5的到来可以让前端开发更轻松. HTML5致力于解决跨浏览器问题,可以部分取代JS:HTML5致力于把浏览器变成一个前端执行环境,而不是简单的视图呈现工具. HTML混乱,不规范.XHTML将HTML和XML的长处结合.无论HTML4.01还是XHTML,都有DTD作为语义约束.但是很少有HTML页面完全遵守HTML4.0

python3 day1-python基础

开始python的学习,关于python的介绍及其发展历史这里就不多说了.可以百度一下. 本人也是刚刚开始学习,知识点后续会在补充. 首先我们面临的选择:使用哪个版本开始学习(可以去官网查询,有英文的具体介绍) 一.python2 or python3 2个版本之间的差别有很多,编码.语法.字符串.数据类型.库.类.模块等等.这里理解不深刻先说以下2点. 1.默认编码 python2默认使用的是ascii,所以在读取中文时候会乱码,解决的方法是在文件的开头加上:# -*- coding: UTF

详解python2 和 python3的区别

看到这个题目大家可能猜到了我接下来要讲些什么,呵呵,对了,那就是列出这两个不同版本间的却别!搜索一下大家就会知道,python有两个主要的版本,python2 和 python3 ,但是python又不同于其他语言,向下兼容,python3是不向下兼容的,但是绝大多数组件和扩展都是基于python2的,下面就来总结一下python2和python3的区别. 1.性能 Py3.0运行 pystone benchmark的速度比Py2.5慢30%.Guido认为Py3.0有极大的优化空间,在字符串和

小Y的Python学习日志--Python2.0和3.0的一些区别(转)

#本文仅为个人学习过程的整理和记录,如有从他人博客.网站摘录的内容,本人会明确标明,如有涉及侵权,请联系本人,本人会在第一时间删除. 参考资料网址:http://www.cnhonkerarmy.com/thread-58029-1-1.html 1.性能 Py3.0运行 pystone benchmark的速度比Py2.5慢30%.Guido认为Py3.0有极大的优化空间,在字符串和整形操作上可 以取得很好的优化结果. Py3.1性能比Py2.5慢15%,还有很大的提升空间.2.编码 Py3.