我想知道这个“:”是否必要以及这个“:”代表什么

时间:2013-08-17 08:00:54

标签: ruby

我正在学习Ruby。你可以从类中取消一个方法:

class Person
  undef :talk
end

但是当我尝试使用此代码时,我发现如果我没有使用“:”符号,它也会起作用:

class Person
   undef talk
end

所以我想知道这个“:”是否是必要的以及这个“:”代表什么。

2 个答案:

答案 0 :(得分:2)

:talk是一个符号,您应该在没有:

的情况下使用
undef talk

请参阅Object#undef

  

请注意,undef的参数是方法名称,而不是符号或字符串。

答案 1 :(得分:2)

:foo是Ruby中的symbol;粗略地说,它是一个内部字符串,其名称是它的值。

Object#undef expects the method作为参数,根据文档而不是字符串或符号。在这种特殊情况下,根据文档,符号语法不正确。