Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.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的%w快捷方式的奇怪行为_Ruby - Fatal编程技术网

Ruby的%w快捷方式的奇怪行为

Ruby的%w快捷方式的奇怪行为,ruby,Ruby,这与我预期的一样,返回true: 这也如我所预期的那样起作用,并且返回true: 但这并不像我预期的那样有效,返回false: 最奇怪的是,第一个或最后一个值返回false,而内部值返回true。我用三到五个字符的字符串尝试了这个方法,得到了相同的结果 为什么? 编辑:伊吉安让我检查x是否包含?“真的被评估为真。没有。我现在明白了,当我尝试那个案例时,我没有把字符加引号!我想我需要增加我的屏幕字体或者买一副新眼镜。因此,%w“a b c”中的值是“a、b和c”。这很好地解释了为什么我会有这样的行

这与我预期的一样,返回true:

这也如我所预期的那样起作用,并且返回true:

但这并不像我预期的那样有效,返回false:

最奇怪的是,第一个或最后一个值返回false,而内部值返回true。我用三到五个字符的字符串尝试了这个方法,得到了相同的结果

为什么?


编辑:伊吉安让我检查x是否包含?“真的被评估为真。没有。我现在明白了,当我尝试那个案例时,我没有把字符加引号!我想我需要增加我的屏幕字体或者买一副新眼镜。因此,%w“a b c”中的值是“a、b和c”。这很好地解释了为什么我会有这样的行为。

如果你把这个放到irb中,看看Ruby是怎么想的,答案很明显:

%w('a b c d e')
# => ["'a", "b", "c", "d", "e'"]
它不包含e,而是“e”,因为您不正确地使用了%w


使用%w时删除引号。它在空格上拆分,而不是在引号上拆分。任何非空格字符都将被视为字符串的一部分,并且会粘在相邻的字母上。

请检查:for me p x.include?“e'=>错误。是吗?@iGian是的,是的!请看我的编辑,谢谢。看起来像是心不在焉的吉恩教授咬了我。当你知道的时候很明显。我理解了%w接受字符串参数的快捷方式,然后它在空格上拆分,如拆分“abcde”。感谢一位红宝石新手它大致相当于'abcde'.strip.split/\s+/,但可以说要简洁得多。还有%i[…]等价物,它代替字符串返回符号。很高兴知道。非常感谢。是的,我把它放进了irb,但我没有注意到那些额外的报价。我必须增加终端字体的大小。更不用说多注意那件事了。
x = %w('a b c d e')
x.include? 'e' # => true
%w('a b c d e').include? 'e'
%w('a b c d e')
# => ["'a", "b", "c", "d", "e'"]