gpt4 book ai didi

arrays - Ruby:将 int 和存储转换为数组

转载 作者:太空宇宙 更新时间:2023-11-03 16:43:09 26 4
gpt4 key购买 nike

在我的第一个 ruby​​ 硬件作业中,我必须编写一个 FizzBu​​zz 程序。 (如果一个 int 是/3,它转换为一个“Fizz”字符串,如果被 5 整除,一个“Buzz”字符串,如果被两个“FizzBu​​zz”字符串整除。)最后,如果不能被任何一个整除,我需要转换将其自身编号为一个字符串,并在名为 main 的方法中将其存储到一个数组中。

class FizzBuzz
def initialize(int_num, str_fb, value)
self.int_num = int_num
self.str_fb = str_fb
self.value = value
end

def int_num
@int_num
end

def int_num=(num)
raise TypeError if not num.is_a? Integer
@num = int_num
end

def str_fb
@str_fb
end

def str_fb=(name)
if int_num % 3 == 0
int_num = "Fizz"
elsif int_num % 5 == 0
int_num = "Buzz"
elsif int_num % 5 == 0 and int_num % 3 == 0
int_num = "FizzBuzz"
else
str_fb = int_num.to_s #Also needs to be stored in an array in main function
end


def main
ary =array.new
end
end

如何将新转换的 int_num(现在是字符串)存储到 main 中的数组中?另外,上面的代码只是该类的一个方法,但它看起来正确吗?谢谢,我是一个成熟的 Ruby 新手,感谢所有帮助。

** 添加了完整代码。仍然不完整,因为我需要为循环 1-50 的值创建一个 getter 和 setter。

最佳答案

要回答原来的问题,只需将要返回的变量放在数组中的方括号中即可:

def main
[str_fb]
end

许多其他特定于 Ruby 的改进可以在这里进行。对于初学者,您可以将 int_numint_num= 方法替换为一行:attr_accessor :int_num。 (您需要将 raise 移至构造函数。)

您可以将 str_fb 方法替换为另一行:attr_reader :str_fb

在构造函数中,Ruby中更常见的是使用实例变量来存储输入参数。考虑哪些方法要公开,哪些要私有(private)。您可以将实例方法(包括 attr_accessorattr_reader 添加一行 private 并将这些方法移到它下面。

因此您的代码可能如下所示:

class FizzBuzz

attr_accessor :int_num
attr_reader :str_fb, :value

def initialize(int_num, str_fb, value)
raise TypeError unless int_num.is_a?(Integer)
@int_num = int_num
@str_fb = str_fb
@value = value
end

<public instance methods here>

private

<private instance methods here>

end

关于arrays - Ruby:将 int 和存储转换为数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40387411/

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