gpt4 book ai didi

ruby - to_a 和 to_ary 有什么区别?

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

to_ato_ary 有什么区别?

最佳答案

to_ary用于隐式转换,而to_a用于显式转换。

例如:

class Coordinates
attr_accessor :x, :y

def initialize(x, y); @x, @y = x, y end

def to_a; puts 'to_a called'; [x, y] end

def to_ary; puts 'to_ary called'; [x, y] end

def to_s; "(#{x}, #{y})" end

def inspect; "#<#{self.class.name} #{to_s}>" end
end

c = Coordinates.new 10, 20
# => #<Coordinates (10, 20)>

splat 运算符 ( * ) 是一种显式转换为数组的形式:

c2 = Coordinates.new *c
# to_a called
# => #<Coordinates (10, 20)>

另一方面,并​​行赋值是一种隐式转换为数组的形式:

x, y = c
# to_ary called
puts x
# 10
puts y
# 20

在 block 参数中捕获集合成员也是如此:

[c, c2].each { |(x, y)| puts "Coordinates: #{x}, #{y}" }
# to_ary called
# Coordinates: 10, 20
# to_ary called
# Coordinates: 10, 20

ruby-1.9.3-p0 上测试的示例.

这种模式似乎在整个 Ruby 语言中都被使用,像 to_s 这样的方法对证明了这一点。和 to_str , to_ito_int可能还有更多。

引用资料:

关于ruby - to_a 和 to_ary 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9467395/

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