Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.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
Ruby:如何跨多行初始化数组_Ruby_Syntax - Fatal编程技术网

Ruby:如何跨多行初始化数组

Ruby:如何跨多行初始化数组,ruby,syntax,Ruby,Syntax,我有一个小的Ruby脚本,其中一个数组被初始化为包含几个字符串 MyArray = ["string 1", "string 2" , "string 2" ] 问题是初始化列表中有很多字符串,我想打断这行: MyArray = [ "string 1" ,"string 2" ,"string 2" ] 但是Ruby为这种格式标记了一个语法错误 我试着在每一行的末尾加上“\”但没有成功 如何在Ruby

我有一个小的Ruby脚本,其中一个数组被初始化为包含几个字符串

MyArray = ["string 1", "string 2" , "string 2" ]
问题是初始化列表中有很多字符串,我想打断这行:

MyArray = [
            "string 1"
           ,"string 2" 
           ,"string 2"
          ]
但是Ruby为这种格式标记了一个语法错误 我试着在每一行的末尾加上“\”但没有成功


如何在Ruby中实现这一点?

您需要在项目后面加逗号,如下所示

MyArray = Array.new(
            "string 1"
           ,"string 2" 
           ,"string 2"
          )
myarray = [
  "string 1",
  "string 2",
  "string 3"
]
此外,如果您可能考虑在项目之前加逗号,例如在编写代码时加上easy Comment之类的。你可以在那里留下一个挂起的逗号,没有真正的副作用

myarray_comma_ended = [
  "test",
  "test1",
  "test2", # other langs you might have to comment out this comma as well
  #"comment this one"
]

myarray_no_comma_end = [
  "test",
  "test1",
  "test2"
]

以多行方式创建阵列的另一种方法是:

myArray = %w(
   Lorem 
   ipsum 
   dolor
   sit
   amet
)

+最后一个逗号为1。在添加额外的项时,如果您将其粘贴到IRB(或编辑器并运行它)中,它会带来更好的提交,传统上在ruby 1.9之前,您必须将分隔符(、或.)保留在行的末尾,以使解析器满意。1.9允许您移动。用于将方法链接到下一行,但不使用逗号。请注意%w[]也是以空格分隔的,因此如果“string1”更改为“string 1”,则MyArray将==
[“string”、“1”、“string2”、“string3”]
值得注意的是,可以像这样转义空格:
%w(string\1 string\2 string\3)
@dinjas我认为在这一点上我更愿意使用标准数组语法。请记住,这对OP示例不起作用,因为
%w
在空间上进行定界,
string 1
将导致[“string”,“1”]。您需要使用
[]
构造函数。不一定:
%w(string\1 string\2 string\3)
myArray = %w(
   Lorem 
   ipsum 
   dolor
   sit
   amet
)