gpt4 book ai didi

arrays - 如何定义接受数组或字符串的 Ruby 方法?

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

我定义了一个接受数组(字符串)的方法,比如

def list(projects)
puts projects.join(', ')
end

list(['a', 'b'])

但是,作为使用仅包含单个 String 元素的 Array 调用它的简写,我希望相同的函数也接受单个普通 String,例如

  list('a')

在方法内部处理这个问题的 Ruby 方法是什么?

最佳答案

为什么不是这样的:

def list(*projects)
projects.join(', ')
end

然后你可以用任意多的参数来调用它

list('a')
#=> "a"
list('a','b')
#=> "a, b"
arr = %w(a b c d e f g)
list(*arr)
#=> "a, b, c, d, e, f, g"
list(arr,'h','i')
#=> "a, b, c, d, e, f, g, h, i"

splat (*) 会自动将所有参数转换为数组,这将允许您毫无问题地传递数组和/或字符串。它也适用于其他对象

list(1,2,'three',arr,{"test" => "hash"}) 
#=> "1, 2, three, a, b, c, d, e, f, g, {\"test\"=>\"hash\"}"

感谢@Stefan 和@WandMaker 指出Array#join 可以处理嵌套数组

关于arrays - 如何定义接受数组或字符串的 Ruby 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31704164/

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