方法名可以以问号结尾 ?
def has_completed?
return count > 10
end
但变量名不能。
这是什么原因呢?让变量名也以同样的方式结尾不是很方便吗?鉴于我们通常无法仅通过查看名称 foobar
来判断 foobar
是方法还是变量,为什么 会出现异常?
案例?
我应该如何处理它?也许总是在代码中使用 has
或 is
?
if process_has_completed
...
end
if user_is_using_console
...
end
最佳答案
您必须询问 Matz 才能获得权威答案。然而,
- Ruby 是一种无类型的编程语言,像
finished?
这样的变量将暗示一种特定类型( bool 值),这对我来说似乎有些矛盾。 - 问题在某种程度上需要接受者(可以回答问题的人)。一个方法必须有一个接收者(方法被调用的对象),所以问号是有意义的。另一方面,变量没有接收者,它只是一个容器。
关于ruby - 为什么变量名不能以 `?` 结尾,而方法名可以?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5448938/