我目前正在开发一个基本的Ruby编程项目,专注于创建类和对这些类的操作。我的经验很少,但了解Ruby的一般概念。
我的任务是创建一个Array2类。从类创建数组,对数组执行操作。我尝试的方法是to-string方法,is-reverse方法有两个数组参数,并测试第一个数组是否与第二个数组相反。
这是我的尝试,我尝试但是我无法将数组正确地传入课堂。另外我相信我有一些呼唤并发症。
class Array2
def initialize (a)
@array = Array.new(a)
end
def to_s
return @array
end
def isreverse (array1,array2)
reverasea = Array.new
reverasea = array1.reverse
if (reversea = array2) then
return "The First Array Is The Reverse Of The Second Array"
else
return "The First Array Is Not The Reverse Of The Second Array"
end
end
end
array1 = ["4","5","6","7"]
array2 = ["7","6","5","3"]
a1 = Array2.new(array1)
a2 = Array2.new(array2)
puts a1.to_s
puts a2.to_s
puts a1.isreverse(array1, array2)
答案 0 :(得分:1)
你有一个你可能意味着平等测试的任务:
if (reversea = array2) then
你可以完全省去reversea而只是测试(这需要Array2
中的反向方法)
if (array1.reverse == @array) then
我个人会使isreverse成为一个布尔值,并且无需再次传入同一个数组:
def isreverse? (array1)
return (@array.reverse == array1)
end
然后像
一样使用它puts "The First Array Is#{a1.isreverse?(a2)?"":" Not"} The Reverse Of The Second Array"
将它们放在一起,它看起来像:
class Array2
def initialize (a)
@array = Array.new(a)
end
def to_s
return @array
end
def reverse
@array.reverse
end
def isreverse? (array1)
return (array1.reverse == @array)
end
end
array1 = ["4","5","6","7"]
array2 = ["7","6","5","3"]
a1 = Array2.new(array1)
a2 = Array2.new(array2)
puts a1.to_s
puts a2.to_s
puts "The First Array Is#{a1.isreverse?(a2)?"":" Not"} The Reverse Of The Second Array"
答案 1 :(得分:1)
以下是对现有方法的一些调整。我在评论中添加了原始的::
class Array2
def initialize (a)
@array = Array.new(a)
end
def to_array # to_s is a misnomer: it doesn't return a string
return @array
end
def isreverse (a)
#reverasea = Array.new NOTE this is not needed; the following .reverse creates a new array for you
reversea = a.to_array.reverse # get the reverse of the array represented
# NOTE = is assign, == is compare in this case
# The following compares the reversed of the array `a` with the array value of this class, @array
if (reversea == @array) then
return "The First Array Is The Reverse Of The Second Array"
else
return "The First Array Is Not The Reverse Of The Second Array"
end
end
end
array1 = ["4","5","6","7"]
array2 = ["7","6","5","3"]
a1 = Array2.new(array1)
a2 = Array2.new(array2)
puts a1.to_array # (renamed)
puts a2.to_array # (renamed)
#puts a1.isreverse(array1, array2) NOTE you don't need to pass array1 into class a1 since it is already made from array1
puts a1.isreverse(a2)
答案 2 :(得分:1)
我会选择更简单的东西,例如:
Filename: reverser.rb
class Reverser
def self.is_reverse_of(array1,array2)
array1_reversed=array1.reverse
is_or_isnt= (array1_reversed==array2)? 'Not ' : ''
return "The First Array Is #{is_or_isnt}The Reverse Of The Second Array"
end
end
puts Reverser.is_reverse_of(["4","5","6","7"], ["7","6","5","4"])
puts Reverser.is_reverse_of(["4","5","6","7"], ["7","6","5","3"])
ruby reverser.rb
The First Array Is Not The Reverse Of The Second Array
The First Array Is The Reverse Of The Second Array
这个想法是使用类级别的方法而不是实例化那么多并且代码更少。