0

嗨找到以下两个块:

第一块

irb(main):001:0> s="acbbdd"
=> "acbbdd"
irb(main):002:0> /e/=~s
=> nil
irb(main):003:0> if /e/=~s then
irb(main):004:1* print "h"
irb(main):005:1> end
=> nil

第二座

irb(main):001:0> s="acbbdd"
=> "acbbdd"
irb(main):006:0> if /c/=~s then
irb(main):007:1* print "h"
irb(main):008:1> end
h=> nil
irb(main):009:0>

你能帮我理解如何=~工作III阻止吗?在第一个块中它不匹配并返回nil,但在第二个块中如何nil来?

4

2 回答 2

3

在第一个块中,字符串不匹配/e/- 没有ein "acbbdd"

在第二个块中,字符串匹配/c/- 有一个cin "acbbdd"

出现的原因nil是因为它是 的返回值print,因此也是整个if块的返回值。

于 2013-01-25T11:08:53.803 回答
1

II, /c/ 匹配 s,所以print "h"get 被执行。你得到一个输出(字符串“h”)和来自 print 语句的返回值(nil)

然后 if 块返回块中最后一条语句的返回值,在本例中为 nil。

运行print "h"会给你同样的结果。

于 2013-01-25T11:13:24.833 回答