Ruby 2.3新特征有哪些(ruby,编程语言)

时间:2024-05-08 03:05:34 作者 : 石家庄SEO 分类 : 编程语言
  • TAG :

    Ruby+2.3%E6%96%B0%E7%89%B9%E5%BE%81%E6%9C%89%E5%93%AA%E4%BA%9B

让我们查看引入了哪些新函数。

引入了新的运算符(&.)。在您需要在调用对象上的方法之前检查对象是否为nil的情况下,它可能非常有用。如果对象等于nil,它将返回nil,否则将调用该对象的方法。

有一些注意事项需要考虑。 如果用户设置为false,则第一个版本的评估结果为false, 但是安全的导航操作员会抛出NoMethodError。 这类似于Rails的#try!方法。

在Ruby 2.2之前,字符串在Ruby中默认是可变的。 我们可以做类似str [2] ='z'之类的事情。 如果我们想使字符串不可变, 我们需要在其上调用#freeze(例如,str ='foobar'.freeze)。

使用冻结的(不可变的)字符串可以提高性能 因为Ruby现在必须分配更少的对象。 因此,有计划在Ruby 3.0中默认使字符串不可变。

为了使过渡更容易, Ruby 2.3允许您选择默认情况下冻结所有字符串文字。 您可以通过添加评论来启用此函数frozen_string_literal:true在文件的开头。 启用后,文件中的所有字符串文字将被冻结 即使不对它们调用#freeze。 请注意,这仅在具有注释的文件上启用该函数。

尽管目前看来这似乎不是重大变化, 这将为顺利过渡到Ruby 3.0铺平道路。

这是标准库的另一个有用的补充。 现在,我们可以访问数组和哈希中的嵌套元素 使用更简单的API。

我们现在可以使用数组来做到这一点:

Hashes:

这在处理JSON数据时可能非常有用 我们已经解析为哈希。

当您由于方法名称中的错字而收到NoMethodError时, Ruby现在可以帮助建议与该名称相似的其他方法名称。

这可能看起来像个小小的变化, 但这是我在2.3版本中最喜欢的函数。 使错误消息更有用具有巨大的影响 使该语言更易于使用, 特别是对于初学者。

散列现在已在其上定义了比较方法。如果看到a >= b,则它正在检查b中的所有键值对是否也存在于a中。

在上面的第一个示例中, RHS中的键值对[:x,1]是 在LHS中的代码-[[:x,1],[:y,2]], 因此它返回true。

这也适用于所有其他比较运算符。 在Ruby中提出此函数的Olivier Lacan, 写了一个很好的解释Ruby 2.3中的哈希比较。

Hash#to_proc返回一个lambda,该lambda将键与值映射。 当您用钥匙呼叫lambda时, 它从哈希返回相应的值。

它本身似乎没有用。为什么不使用[]访问元素?但是,当我们使用&运算符创建proc并将其传递给Enumerable块时,它变得很有趣。

此方法的工作方式类似于Hash#values_at- 它获取与我们传入的键列表相对应的值。 区别在于,当键不存在时,#values_at返回nil, 而#fetch_values会为未显示的键引发KeyError

grep_v方法等效于 命令行grep实用程序中的-v选项。 它返回不符合条件的项目列表。

本文:Ruby 2.3新特征有哪些的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:如何实现寻找两个正序数组的中位数下一篇:

7 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18