正如标题所说,我对语句后面的代码块和"正常"代码块之间的区别感到困惑.
我通常在Ruby中用do
...end
,例如.
while true do
# ...
end
但是它是一个街区吗?如果是,为什么?如果没有,为什么它被声明为我们用方法声明的块?
正如标题所说,我对语句后面的代码块和"正常"代码块之间的区别感到困惑.
我通常在Ruby中用do
...end
,例如.
while true do
# ...
end
但是它是一个街区吗?如果是,为什么?如果没有,为什么它被声明为我们用方法声明的块?
while
不是一种方法,而是一种keyword.这允许它有自己的语法(例如,使do
可选)和判断规则.
while
回路的主体不是块.块被发送到方法,while
不是方法.不能将块参数传递给while
(如while(true, &block)
中所示),也不能引用while
循环的主体或将其传递.它也不像块那样创建新的变量范围.
为什么它被声明为我们用方法声明块?
我想这是出于方便.如果已经有do
和end
,为什么要使用不同的语法?对类似的构造(while
循环体、块体、方法体等)重新使用相同的语法,可以更容易地读写代码.