首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Fixnum实例的定义方法

Fixnum实例的定义方法
EN

Stack Overflow用户
提问于 2017-07-09 20:43:07
回答 1查看 48关注 0票数 1

我可以在这样的实例上定义一个方法:

代码语言:javascript
复制
object = Object.new
def object.foo
  puts "5"
end

尝试类似于Fixnum的方法不起作用:

代码语言:javascript
复制
def 3.foo
  puts "3"
end

def 3.foo
     ^
(irb):7: syntax error, unexpected keyword_end, expecting end-of-input

原因是什么?

我知道这是我不该做的事。我只是想知道为什么这不像我预料的那样起作用。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-09 21:38:28

这里有两件事在起作用。

有一件事是,Fixnums不能有单例方法。但是,我们甚至还没有到那个地步,因为您的代码有一个语法错误,因此Ruby一开始甚至没有尝试运行它。

第二件事是Ruby的语法很复杂,因此有很多暗角的情况。您似乎已经找到了一种方法,在这种情况下,.符号的不同用法意味着小数分隔符和方法选择器以神秘的方式相互冲突。

当然,这实际上并不是什么大问题,因为正如我前面提到的,Fixnums无论如何不可能有单例类:

代码语言:javascript
复制
object = 3

def object.foo
  puts "3"
end
# TypeError: can't define singleton
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45000850

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档