Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Don';我一点也不懂RUBY=[*?a…?z]_Ruby - Fatal编程技术网

Don';我一点也不懂RUBY=[*?a…?z]

Don';我一点也不懂RUBY=[*?a…?z],ruby,Ruby,我在几年前发现了这段代码。 我理解这段代码的作用,但不知道如何。 有人能解释一下*和在这里做什么吗??我以前从未见过这样使用它们 myarr = [*?a..?z] #generates an array of strings for each letter a to z myarr = [*?a..?z] + [*?0..?9] # array of strings a-z and 0-9 ?只是一种字符文字语法,它在ruby

我在几年前发现了这段代码。 我理解这段代码的作用,但不知道如何。 有人能解释一下
*
在这里做什么吗?
?我以前从未见过这样使用它们

myarr = [*?a..?z]       #generates an array of strings for each letter a to z
myarr = [*?a..?z] + [*?0..?9] # array of strings a-z and 0-9

只是一种字符文字语法,它在ruby<1.9中曾经有特殊的含义,但现在
?a
与执行
“a”

然后,
正在创建一个数组,
*
只需将其展开为一个参数列表,
[
]
对将其转换为一个数组

我希望我的GoogleFu足以获得一些像样的文档链接或解释,但搜索这些链接是非常困难的

更新:
?a
实际上与前面提到的
“a”
相同,而不是
“a”
。要查看此运行(保留IRB标签以帮助说明发生了什么):


&在RubyFYI中:
[*?a…?z]+[*?0…?9]
可以组合成一个
[*?a…?z,*?0…?9]
是的,谢谢我没有实际使用这个代码,我只是想知道场景背后发生了什么更具体地说,
*
将范围扩展到参数列表中,
[…]
将这些参数转换为一个数组。为了完整性,我要提到的是,现在通常是这样做的
*('a'..'z')
('a'..'z')。对于a
@Mark,可能很明显,但我要注意,
*('a'..'z')
只能用作参数;对于赋值,
a=[*('a'..'z')]
a=('a'..'z')。到a
irb(main):001:0> print ?\t
    => nil
irb(main):002:0> print "\t"
    => nil
irb(main):003:0> print '\t'
\t=> nil
irb(main):004:0>