gpt4 book ai didi

Ruby - 修改类

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:02:01 24 4
gpt4 key购买 nike

我写了一个简单的方法来检查一个数字是否是 Armstrong number .但是现在我想修改默认的 Number 类放置方法。所以,我有代码:

def is_an(number)
(number.to_s.split(//).map(&:to_i).inject{|x,y|x+y**(number.size-1)}) == number ? true : false
end
p is_an(153)

我想将它用作方法:153.is_a?那么,我该怎么做呢?

class Number
def is_an
??? How to use object data over here? ???
end
end

非常感谢阅读。

最佳答案

合并@mikej 的回答,加上用self 替换number:

class Fixnum
def is_an
digits = self.to_s.split(//).map(&:to_i)
digits.inject(0) { |x,y| x+y**digits.size } == self
end
end

但我建议更改名称,使其更像 Ruby。而不是 #is_an,它不是很具描述性,#armstrong? 怎么样,然后你可以调用:

153.armstrong?

关于Ruby - 修改类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17589517/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com