2010-12-13 1 views
2

현재 루비에서 파이썬으로 객체를 전송해야하는 프로젝트에서 작업하고 있습니다. 분명히 직렬화가 계속 진행됩니다. 나는 yaml과 같은 것을 보았지만 배포 할 시간이 왔을 때 도서관 등의 의존성을 다루고 싶지 않았기 때문에 내 자신의 것을 쓰기로 결정했습니다. 이 serialization 형식이 작동하는 방식을 작성했습니다. here.크로스 언어 객체 직렬화에서 루비 기호를 처리하는 방법

내 질문에이 형식은 루비와 파이썬 간의 상호 언어를 사용하기위한 것인데, 어떻게 루비의 기호를 직렬화해야합니까? 파이썬에서 같은 방식으로 작동하는 객체를 인식하지 못합니다. 기호가 포함 된 덤프가 실패해야합니까? 그냥 문자열로 직렬화해야합니까? 무엇이 최고일까요?

+0

JSON과 YAML이 할 수없는 것은 무엇입니까? 그것들은 이미 문서화되어 있고 이미 여러 언어로 구현 된 수용 표준입니다. –

+0

그것이 작동하지 않을 것이 아니라, 나는 분배 할 시간이 왔을 때 모든 의존성을 다루고 싶지 않다. – Ryex

답변

1

프로젝트에 필요한 것이 무엇입니까? 기호가 중요하다면, 기호를 다루는 방법이 필요합니다.

저는 Ruby 프로그래머가 아니지만 방금 읽은 것으로부터 문자열로 변환하는 것이 가장 쉽다고 생각합니다. 표준 파이썬 인터프리터는 동일한 짧은 문자열에 대해 메모리를 재사용합니다. 이는 심볼 사용에 대한 주요 이유 인 것으로 보입니다.

편집 : 다른 프로그래머에게 작동해야하는 경우 값을 앞뒤로 전달해서는 안됩니다. 따라서 기호를 올바르게 처리하거나 오류를 바로 처리해야합니다. Python에서 충분히 간단해야합니다.

class Symbol(str): 
    pass 

# In serialising code: 
if isinstance(x, Symbol): 
    serialise_as_symbol(x) 
+0

나는 당신의 권리를 가정한다. 나는 그들을 완전히 버리고 그 (것)들을 스팅은 옵션일지도 모르지만 파이썬 측에서 직렬화하면 루비가 심볼 대신 문자열로 돌아올 것입니다. 파이썬 측면에서 심볼 클래스를 만드는 것이 파이썬이 루비로 직렬화하는 방법을 알 수 있다고 생각합니다. – Ryex

+0

@Ryex : 상징 인 것이 얼마나 중요합니까? 문자열로 처리하는 것이 더 간단할까요? (나는 우리 모두가 좋아하는 것과 같은 언어를 만들려고 노력한다 - 심볼에 익숙하지 않고, 나는 그것들에 대한 필요성이별로 없다고 생각한다.) –

+0

파이썬 문자열에서 우물쭈물하지 않으므로 루비 기호가 될 수도있다. 기호를 사용하는 것은 사실입니다. 나는 다른 사람들이 데이터 구조를 프로그래밍하는 방법을 알 수 없기 때문에 상징을 잊어 버릴 수 있습니다. 저자의 제한없이 제게 쓰여지지 않은 데이터 구조에 대해이 작업을하고 싶습니다. – Ryex

0

JSON 또는 XML과 같은 표준 데이터 교환 형식을 사용하지 않는 이유는 무엇입니까? 그들은 무수한 응용 프로그램, 서비스 및 프로그래머에게 받아 들여지는 것 같습니다.

0

기호가 걸림돌 인 경우 세 가지 선택 사항이 있습니다. 허용하지 않거나 문자를 즉시 ​​문자열로 변환하거나 다른 언어로 보편적이거나 무해한 방법을 찾아보십시오.

관련 문제