如何在一个方法中生成数据并将该数据传递到另一个方法但是在同一个类中?
我有一个带有两个方法的Ruby类。有没有办法调用create_data_hash
并将结果作为两个变量返回到rest_call
?
我还需要能够调用方法create_data_hash.email
并返回“foo@foo.com”和create_data_hash.password
并返回“strongpassword”。
我需要能够在程序的其他部分使用这些值,但仍然需要这个类来处理数据的生成。
require 'json'
module New
class Generator
def create_data_hash
email = 'foo@foo.com'
password = 'strongpassword'
end
def rest_call(user_email, user_password)
data_hash = { email: user_email,
password: user_password ,
info: "user",
name: "JohnDoe",
}
@random = endpoint_tester_class.new
@random.endpoint_test(data_hash.to_json)
end
end
end
答案 0 :(得分:0)
这可以通过下一种技术实现。
def accept_multi(*args)
puts "args are: #{args}"
puts "args class is #{args.class}"
end
def accept_two(one, two)
puts "first arg is #{one}", "second arg is #{two}"
end
def return_two
return "a", "b"
end
# now run the code
accept_multi return_two
# prints:
# args are: [["a", "b"]]
# args class is Array
# do not forget '*' symbol
accept_two *return_two
# prints:
# first arg is a
# second arg is b
return_two.class
# prints
# Array
注意:如果您将使用它,请不要忘记检查您的方法。例如,如果您致电accept_two *[1, 2, 3]
,则会引发ArgumentError
异常。
此外,您还可以使用实例变量。
class TestClass
def set_vars
@one = 1
@two = 2
end
def print_vars
puts @one, @two
end
def process
set_vars
print_vars
end
end
tc = TestClass.new
tc.process