Ruby25新特征介绍

刘文斌出诊时间和医院 http://m.39.net/baidianfeng/a_8505691.html

Ruby核心团队传统上已经发布了新版本的Ruby。在圣诞节,这个圣诞节我们有了Ruby2.5。几年前,我开始发布Ruby更改的摘要(2.4,2.3),今年的版本就在这里。

Rescuedo/end块

如果您需要捕获一个块中的异常,唯一的方法是将其放在begin/end块中。现在,您可以捕获所有do/end块内的异常。

(1..5).eachdo

n

do_something(n)rescueSomeError=eputsenextend已删除lookup

在以前的版本中,如果Ruby在当前范围内找不到常量,它会回退到顶级常量,并发出警告。在2.5中已更改,现在这将导致异常。

classFoo;endclassBar;end#Ruby2.4Foo::Bar#warning:toplevelconstantBarreferencedbyFoo::Bar#=Bar#Ruby2.5Foo::Bar#NameError回溯顺序相反

当打印到控制台时,Ruby将以相反的顺序显示回溯。您还将以粗体和下划线看到错误消息。这是一项实验性函数,并且打印到日志时顺序不会更改。

在进行Rails项目时,通常需要向后滚动很长一段距离在回溯中找到那条线该行显示发生异常的行。通过反转回溯,您在导致异常的行上获得上下文无需向后滚动。

Kernel#yield_self

该方法将对象传递给块并返回该块返回的值。

isbn="0---2"isbn.gsub(-,).yield_self{

isbn

URI("#{API_URL}?q=isbn:#{isbn}")}.yield_self{

uri

Net:HTTP.get(uri)}.yield_self{

json_response

JSON.parse(json_response)}.yield_self{

response

response.dig(items,volumeInfo)}

Ruby社区有很多人对Elixir感兴趣的人因此这可能最终成为一个流行的函数。

字符串方法

String#-

:对未冻结的字符串进行重复数据删除。

s=-foo#=foos.frozen?#=true

delete_prefix和delete_suffix(以及bang的!版本)

Mr.Smith.delete_prefix(Mr.)#=SmithWellingtonSt..delete_suffix(St.)#=Wellington

grapheme_clusters

s="a\u"#="a?"s.grapheme_clusters#=["a?"]s.codepoints#=[97,]数组方法

添加了#append和#prepend方法,分别是#push和#unshift的别名。这些别名已通过ActiveSupport在Rails中引入,但是很高兴看到它们被引入Ruby。

list=[b,c]#=[b,c]list.prepend(a)#=[a,b,c]list.append(d)#=[a,b,c,d]list#=[a,b,c,d]哈希方法

添加了#slice和#transform_keys,最初也来自ActiveSupport。

h={a:1,b:2,c:3,d:4}h.slice(:a,:b)#={a:1,b:2}h.transform_keys(:to_s)#={"a"=1,"b"=2,"c"=3,"d"=4}Goodbye,ubygems.rb!

这项更改将对您使用Ruby的方式产生零影响,但是我很好奇为什么我们在stdlib中有一个ubygems.rb文件,所以我想提一下,因为它已被删除。

Ruby有一个-r标志,可让您需要一个库,例如ruby-rmath到requiremath。rubygems文件的名称为ubygems.rb这样该标志可以用作-rubygems,而不是-rrubygems。从Ruby1.9开始就不需要此文件,并且现在已从stdlib中删除。

预览时标签不可点收录于话题#个上一篇下一篇



转载请注明地址:http://www.sanbaicaoasb.com/scls/8369.html
  • 上一篇文章:
  • 下一篇文章:
  • 热点文章

    • 没有热点文章

    推荐文章

    • 没有推荐文章