相当于Ruby中的"pass"

use*_*007 46 ruby keyword

在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;.

  • 有没有理由你不能做`y = false如果x`? (3认同)

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是一个返回的函数,因此由您决定如何使用它.