相关疑难解决方法(0)

在Ruby中,如何检查方法"foo =()"是否已定义?

在Ruby中,我可以定义一个方法foo =(bar):

irb(main):001:0> def foo=(bar)
irb(main):002:1>   p "foo=#{bar}"
irb(main):003:1> end
=> nil
Run Code Online (Sandbox Code Playgroud)

现在我想检查它是否已定义,

irb(main):004:0> defined?(foo=)
SyntaxError: compile error
(irb):4: syntax error, unexpected ')'
 from (irb):4
 from :0
Run Code Online (Sandbox Code Playgroud)

在这里使用的正确语法是什么?我假设必须有一种方法来逃避"foo =",以便它被解析并正确传递给定义的?运营商.

ruby syntax-error

73
推荐指数
2
解决办法
6万
查看次数

'回应?' 与'定义?'

如果我想检查是否定义了具有给定名称的方法,哪个更好用respond_to?,或者defined?

从效率的角度来看,可以有一个使用的参数defined?因为defined?是一个内置的关键字,而是respond_to?一个方法,因此前者可能更快.但另一方面,在已知要检查的表达式是一个简单方法的情况下,defined?需要解析整个表达式,与使用相比respond_to?,这可能是一个缺点,只需要将参数接受为方法名称.

哪个更好?除了效率之外还有其他问题需要考虑吗?

ruby methods metaprogramming

3
推荐指数
2
解决办法
1056
查看次数

标签 统计

ruby ×2

metaprogramming ×1

methods ×1

syntax-error ×1