Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.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 在rails集合中放置带空格的枚举_Ruby - Fatal编程技术网

Ruby 在rails集合中放置带空格的枚举

Ruby 在rails集合中放置带空格的枚举,ruby,Ruby,最后,我希望t.size的值是3 正如建议的那样,每个空间都必须逃逸……这是一项艰巨的工作。还有什么其他选择?我有一个大约30个单词的列表,我需要把它们放在一个集合中,因为我使用simple\u表单将它们显示为复选框 irb(main):001:0> t = %w{this is a test} => ["this", "is", "a", "test"] irb(main):002:0> t.size => 4 irb(main):003:0> t = %w{"t

最后,我希望t.size的值是3


正如建议的那样,每个空间都必须逃逸……这是一项艰巨的工作。还有什么其他选择?我有一个大约30个单词的列表,我需要把它们放在一个集合中,因为我使用
simple\u表单将它们显示为复选框

irb(main):001:0> t = %w{this is a test}
=> ["this", "is", "a", "test"]
irb(main):002:0> t.size
=> 4
irb(main):003:0> t = %w{"this is" a test}
=> ["\"this", "is\"", "a", "test"]
irb(main):004:0> t.size
=> 4

使用
\
逃离空间:

irb(main):001:0> t = %w{this is a test}
=> ["this", "is", "a", "test"]
irb(main):002:0> t.size
=> 4
irb(main):003:0> t = %w{"this is" a test}
=> ["\"this", "is\"", "a", "test"]
irb(main):004:0> t.size
=> 4

您可以转义空间
%w{this\is a test}
以获得
['this is','a','test']
,但通常我不会使用
%w
,除非这样做的目的是在空格上拆分。

您可以转义空间
%w{this\is a test}
以获得
['this is','a','test code>,但一般来说,我不会使用
%w
,除非这样做的目的是在空格上分割。

你需要用一个“\”来转义空格,比如
t=%w{这是一个测试}
如果你不想让那个空格成为一个拆分器。

你需要用一个“\”来转义空格,比如
t=%w{这是一个测试}
如果您不希望该空格成为拆分器。

正如其他人所指出的,当空格是单词的分隔符时,使用
%w{}
构造。如果您有必须引用的项目,并且仍然希望使用构造,则可以执行以下操作:

%w{this\ is a test}
t = [
    'this is',
    'a',
    'test'
]

正如其他人指出的,当空格是单词的分隔符时,使用
%w{}
结构。如果您有必须引用的项目,并且仍然希望使用构造,则可以执行以下操作:

%w{this\ is a test}

为什么不直接使用普通数组,这样就不必直观地解析所有转义来找出发生了什么?这很清楚:

 > %w{a test here}.unshift("This is")  
 => ["This is", "a", "test", "here"] 

维护你的代码的人不会因为你在不合适的时候使用
%w{}
而讨厌你,或者因为他们看不到你的转义空格而把事情搞砸了。

为什么不使用普通数组,这样就没有人需要直观地解析所有转义来找出发生了什么?这很清楚:

 > %w{a test here}.unshift("This is")  
 => ["This is", "a", "test", "here"] 
t = [
    'this is',
    'a',
    'test'
]

维护你的代码的人不会因为你使用了
%w{}
而讨厌你,因为它不合适,或者因为他们没有看到你的转义空格而把事情搞砸了。

我有一大堆单词要收集。有更好的方法吗?为什么不使用数组或文本文件来代替标题呢?我想收集大量的单词。有更好的方法吗?为什么不使用数组或文本文件,而不是其他的例子呢?在你不想被拆分的地方,它们是双引号吗?可能有比使用
%w{}
更好的方法,为了帮助您,我们需要了解一般模式。坚持使用
%w{}
操作符之类的东西,然后在有其他更好的方法时试图愚弄它,这是糟糕的编程设计。试图强迫
%w{}
去做它不是设计用来做的事情的最终结果是在维护代码时造成混乱。你还有什么其他的例子吗?在你不想被拆分的地方,它们是双引号吗?可能有比使用
%w{}
更好的方法,为了帮助您,我们需要了解一般模式。坚持使用
%w{}
操作符之类的东西,然后在有其他更好的方法时试图愚弄它,这是糟糕的编程设计。试图强迫
%w{}
去做它不打算做的事情的最终结果是在维护代码时造成混乱。
t = [
    'this is',
    'a',
    'test'
]