У тебя не должно быть проблем. Просто убедитесь, что версия python такая же, так как я считаю, что по умолчанию на Mac используется 2.7.
Кроме того, сценарии Python не компилируются, а скорее интерпретируются, поэтому создание исполняемого файла на самом деле не означает, что в данном случае это двоичный файл. Я не уверен, какой метод вы использовали для запуска python на компьютере, на котором нет python, как есть несколько, но если вам удастся сделать это на Windows, он должен работать на Mac.
В Ruby нет никаких элементарных объектов. Это не может поэтому быть обнаружено простым способом.
Вы не можете просто использовать Маршала или YAML для Вашего имеющего версию хранилища? Затем Вы получите загрузку и сохранение всех типов объектов бесплатно. Почему изобретают велосипед?
Я не знаю то, чего Вы хотите достигнуть точно, но рассмотрение источника YAML может быть интересно видеть, как они решают эту проблему. YAML Ruby кодирование реализации просто реализует to_yaml
метод для всех соответствующих классов. См. yaml/rubytypes.rb.
Идея переменчивости действительно не применяет в Ruby тот же путь как на других языках. Единственный неизменный объект является замороженным. Можно даже добавить методы и переменные экземпляра к Fixnums. Например:
class Fixnum
attr_accessor :name
end
1.name = "one"
2.name = "two"
Очевидно, подавляющее большинство времени, люди не собираются быть достаточно патологическими, чтобы добавить атрибуты к Fixnum, но точка, никакой размороженный объект не действительно неизменен.
Если можно придумать канонический список классов, которые Вы хотите принять, неизменны, Вы могли просто пройти и дать им всем immutable?()
метод, который возвращает true (и Объект версия, которая возвращает false). Но как сказанный wvanbergen, лучший способ удостовериться, который не изменяет Ваша копия объекта, является к глубокой копии ею с Маршалом.
Я нашел неэффективный путь:
class Object
def primitive?
begin
self.dup
false
rescue TypeError
true
end
end
end
Другое различие: исходно неизменные объекты не могут быть заморожены, но они все еще возвращают false от замороженного?
5.freeze.frozen? == false
Замораживание не повышает исключение (в отличие от дубликата) Однако, это делает (постоянно!) изменяют изменяемые объекты.
Я нашел, что могу (по крайней мере, в, он - текущее состояние), располагают мое приложение для работы с замороженными объектами, и рубин даст мне исключение, если я попытаюсь изменить их непосредственно. Однако заморозьтесь, только влияет на первый уровень объекта, и массивы, и т.д. сохраненные в нем, могут все еще быть изменены.
Это только относится 1.8 - 5.frozen? возвращает true в ruby1.9 (но не в irb1.9)