如何在一个方法中生成数据并将该数据传递到另一个方法但在同一个类中

时间:2014-10-30 21:52:05

标签: ruby-on-rails ruby selenium-webdriver automated-tests watir-webdriver

如何在一个方法中生成数据并将该数据传递到另一个方法但是在同一个类中?

我有一个带有两个方法的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

1 个答案:

答案 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