Ruby는 Marshaling이라는 데이터를 저장하는 또 다른 방법을 제공합니다. 이렇게하면 클래스/객체를 파일에 저장하고 나중에 다시 구성 할 수 있습니다. 모든 사용자 기본 설정이 단일 객체에 저장되어 있거나 필요한 모든 데이터를 저장할 수있는 객체를 만들면 가져 오기/내보내기 루틴을 텍스트 기반 객체로 작성하는 대신 데이터를 마샬링하는 것이 가장 쉽습니다. 추가 라이브러리 나 보석을 가져 오려고하는 경우.
데이터를 저장할 디스크의 위치는 귀하에게 달려 있습니다. 대부분의 플랫폼에는 단일 사용자 또는 모든 사용자가 사용할 수 있는지 여부에 따라 응용 프로그램 데이터를 저장하기위한 표준 위치가 있습니다. 일반적으로 선택한 대상 플랫폼에서 일반적인 관행을 따르는 것이 가장 안전합니다.
업데이트 : 아마이 될 것 마샬링의 간단한 example은 : 당신이 클래스를 사용하면 사용자 환경 설정을 모두 저장하는 데 사용할 UserPrefs
라는이 있다고 말한다. 당신은 파일에 환경 설정 데이터를 저장하기 위해 다음과 같은 코드를 사용할 수 있습니다 :이 시점에서
# Load prefs from file
my_prefs = nil
File.open("user_prefs.data", "rb") {|f| my_prefs = Marshal.load(f)}
:
my_prefs = UserPrefs.new
# ... Fill in the 'my_prefs' object with the user's preferences, etc ...
# Store the object into a file
File.open("user_prefs.data", "wb") do |file|
Marshal.dump(my_prefs, file)
end
응용 프로그램을로드 다음에, 다음과 같은를 사용하는 기본 설정을 복원 할 수 있습니다 my_prefs
개체는 마샬링 코드를 처음 실행했을 때와 완전히 동일해야합니다. 이것은 본질적으로 한 시점에서 (예를 들어, 프로그램이 종료 될 때) 객체의 스냅 샷을 가져 와서 나중에 복원합니다 (예 : 프로그램이로드 될 때). 내부적으로 구조체의 모든 데이터는 단일 문자열로 인코딩되며이 문자열은 디스크에 저장됩니다. 마샬 모듈은 인코딩과 디코딩을 처리합니다.
Here은 마샬링을 사용하여 데이터를 저장하고 검색하는 또 다른 예입니다.
마샬 모듈에 내장 된 기본 인 코드/디코드 루틴은 일반적으로 대부분의 데이터 저장 클래스에 충분합니다. 특히 복잡한 클래스에는 문제가있을 수 있으며, 그렇다면 자체 인코딩 및 디코딩 메서드를 정의 할 수 있습니다 (first link에는 사용자 지정 메서드 정의 예제가 포함되어 있습니다).
그러나 데이터 형식 중 일부는 일반적으로 Ruby 세션에서 지속되지 않으므로 마샬링 할 수 없습니다 (파일 열기 핸들, Proc
개체 등). Marshal
이 좋아하지 않는 멤버가 포함 된 클래스를 마샬링해야하는 경우 사용자 지정 인코딩/디코딩 함수를 사용하여 나머지 클래스를 마샬링하고 문제가있는 멤버를 생략 할 수 있습니다.
출처
2011-03-21 23:54:52
bta
이 응용 프로그램은 데스크탑 응용 프로그램입니까? –