在python中有一个pass用于定义空函数,条件,循环的关键字......对于Ruby有类似的东西吗?
Python示例:
def some_function():
# do nothing
pass
Run Code Online (Sandbox Code Playgroud)
Jör*_*tag 52
不,Ruby中没有这样的东西.如果你想要一个空块,方法,模块,类等,只需写一个空块:
def some_method
end
Run Code Online (Sandbox Code Playgroud)
而已.
在Python中,每个块都需要包含至少一个语句,这就是为什么你需要一个"假的"无操作语句.Ruby没有有报表,它只有表情,这是完全合法的块包含零个表情.
kon*_*box 16
nil 可能相当于它:
def some_function
nil
end
Run Code Online (Sandbox Code Playgroud)
其中一个基本上有用的方法是救援任何东西,但不做任何事情:
Process.kill('CONT', pid) rescue nil
Run Code Online (Sandbox Code Playgroud)
而不是做
begin
Process.kill('CONT')
rescue
end
Run Code Online (Sandbox Code Playgroud)
这会导致语法错误:
> throw :x rescue
SyntaxError: (irb):19: syntax error, unexpected end-of-input
from /usr/bin/irb:11:in `<main>'
Run Code Online (Sandbox Code Playgroud)
笔记:
nil仍然会回来 def some_function; end; some_function.
nil还会回来的def a; :b; begin; throw :x; rescue; end; end; a;.
use*_*007 12
你总是有end陈述,所以pass不需要.
Ruby示例:
def some_function()
# do nothing
end
Run Code Online (Sandbox Code Playgroud)
小智 10
单行函数和类
def name ; end
class Name ; end
Run Code Online (Sandbox Code Playgroud)
适用于伪代码.
正如之前所回答的那样,ruby中的所有内容都是一个表达式,因此可以将其留空.
def name
end
class Name
end
Run Code Online (Sandbox Code Playgroud)
喜欢pass关键字的python程序员的ruby替代品
def pass
end
# OR
def pass; end
Run Code Online (Sandbox Code Playgroud)
请注意,在Ruby中执行此操作是没用的,因为它允许使用空方法,但如果您热衷pass于此,那么这是最简单,最干净的选择.
现在您可以在任何块内使用此功能,它将工作相同.
def name
pass
end
# OR
class Name
pass
end
Run Code Online (Sandbox Code Playgroud)
请记住,pass是一个返回的函数,因此由您决定如何使用它.
| 归档时间: |
|
| 查看次数: |
26177 次 |
| 最近记录: |