gpt4 book ai didi

ruby - 为什么文字字符串应该以 Frozen 开头? ( ruby 2.1)

转载 作者:数据小太阳 更新时间:2023-10-29 08:23:22 24 4
gpt4 key购买 nike

在开发 Ruby 2.1 之后,我读到了一个可能会被添加的特性,因此允许开发人员指定文字字符串应该以“卡住”开头。

语法如下所示(注意结尾的 f):

str = "imfrozen"f    # str receives a frozen string

other Ruby documentation/wiki我读到此功能具有以下好处:

This allows the VM to use the same String object each time, and potentially for the same frozen string across many files. It also obviously provides all the immutability guarantees of a frozen string.

我的问题是:

  • 这样做有什么好处?
  • 什么是真实世界的例子,说明此类功能何时会提供值(value)?
  • 这与 symbol 有何不同?

谢谢

最佳答案

假设你有这样的代码

array_that_is_very_long.each do |e|
if e == "foo"
...
end
end

在这段代码中,对于 array_that_is_very_long 的每次迭代,都会创建(并丢弃)一个新字符串 "foo",这是一种巨大的资源浪费。目前,您可以通过以下方式解决此问题:

Foo = "foo"
array_that_is_very_long.each do |e|
if e == Foo
...
end
end

提议的语法使这更容易做到:

array_that_is_very_long.each do |e|
if e == "foo"f
...
end
end

关于ruby - 为什么文字字符串应该以 Frozen 开头? ( ruby 2.1),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19169432/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com