gpt4 book ai didi

ruby - 在 Ruby 中卡住 Symbols 和 Numbers 的用途或效果是什么?

转载 作者:数据小太阳 更新时间:2023-10-29 06:34:42 25 4
gpt4 key购买 nike

在 Ruby 1.9 中你可以有 Fixnum , Float , 和 Symbol未卡住或卡住的值:

irb(main):001:0> a = [ 17, 42.0, :foo ]; a.map(&:frozen?)
=> [false, false, false]

irb(main):002:0> a.each(&:freeze); a.map(&:frozen?)
=> [true, true, true]

我了解卡住字符串、数组或其他可变数据类型的实用性。然而,据我所知,Fixnum , Symbol , 和 Float实例从一开始就是不可变的。是否有任何理由卡住它们(或者 Ruby 不会报告它们的任何原因 frozen?

请注意,在 Ruby 2.0 中 Fixnum s 和 Float两者都以卡住状态开始,而 Symbol保留上述行为。所以,它正在慢慢变得“更好”:)

最佳答案

答案是否定的。这些数据类型是不可变的。没有理由卡住这些数据类型。 Ruby 不将这些数据类型报告为卡住的原因是因为 obj.frozen?方法返回对象的卡住状态,对于不可变数据类型,它最初设置为 false。调用 obj.freeze 会将那个对象的 freeze 状态设置为 true

最重要的是,在不可变数据类型上调用freeze 会将对象的freeze 状态设置为true,但什么都不做,因为对象已经是不可变的。

关于ruby - 在 Ruby 中卡住 Symbols 和 Numbers 的用途或效果是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4235238/

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