gpt4 book ai didi

ruby - 将数组作为命令参数传递

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

我正在尝试从命令行将数组传递给 ruby​​ 脚本,但遇到了一些问题。

问题是:

require 'pp'

def foo(arr1, var, arr2, var2)
puts arr1.class
pp arr1
pp arr1[0]
puts arr2.class
pp arr2
pp arr2[0]
end

foo [1, 2], 3, [5, 6], 8

这是输出:

Array
[1, 2]
1
Array
[5, 6]
5

到目前为止一切都很好。现在我更改我的脚本以接受来自命令行的参数:

require 'pp'

def foo(arr1,var)
puts arr1.class
pp arr1
pp arr1[0]
end
foo ARGV[0],3

这是输出:

jruby test.rb [1, 2], 3, [5, 6], 8
String
"[1,"
91
String
"2],"
50

如您所见,数组作为字符串传递,并且 arr[0] 基本上打印 ascii 值。

所以问题是我如何从命令行传递一个数组,希望是在一行中。另外我相信这个问题与所有 shell 调用有关,而不仅仅是 ruby​​ ?

我正在使用 bash shell。

更新:刚刚更新了问题以表明在不同位置可以有多个数组

最佳答案

这是一个 list实现这一目标的方法。远离基于eval 的解决方案。我最喜欢的(虽然我不懂 ruby ,但这是我最喜欢的:

irb(main):001:0> s = "[5,3,46,6,5]"
=> "[5,3,46,6,5]"
irb(main):002:0> a = s.scan( /\d+/ )
=> ["5", "3", "46", "6", "5"]
irb(main):003:0> a.map!{ |s| s.to_i }
=> [5, 3, 46, 6, 5]

关于ruby - 将数组作为命令参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9614283/

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