0

한 메서드에서 데이터를 생성하고 다른 메서드로 같은 클래스에 데이터를 전달하려면 어떻게해야합니까?하나의 메서드에서 데이터를 생성하고 다른 메서드로 같은 클래스에 전달하는 방법

두 가지 방법으로 Ruby 클래스가 있습니다. create_data_hash에 전화하여 rest_call에 두 변수로 결과를 반환 할 수 있습니까?

또한 create_data_hash.email 메서드를 호출하고 "[email protected]"및 create_data_hash.password을 반환하고 "strongpassword"를 반환 할 수 있어야합니다.

이 값을 프로그램의 다른 부분에서 사용할 수 있어야하지만 데이터 생성을 처리하는 데이 클래스가 여전히 필요합니다.

require 'json' 

module New 
    class Generator 

    def create_data_hash 
    email = '[email protected]' 
    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

data_hash를 인스턴스 변수 ('@data_hash')로 만들고'attr_accessor'로 노출 시키십시오. – Anand

답변

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