Что в Ruby эквивалентно функции Delphi SizeOf? - PullRequest
2 голосов
/ 30 июня 2010

Я хочу получить количество байтов, занятых переменной или типом в Ruby.Есть ли эквивалентность функции SizeOf в Ruby on Rails?

Ответы [ 3 ]

2 голосов
/ 30 июня 2010

Как видно из комментариев, в Ruby такого метода нет.Поскольку вы не можете манипулировать памятью непосредственно в Ruby и нет явных «простых» типов (все является объектом), и из-за динамической природы Ruby этот метод в любом случае не будет очень полезен.

Существует исключение сортов с классом String.Поскольку в Ruby строка представляет собой последовательность байтов, String#size вернет размер data в строке.

Этого должно быть достаточно для практических целей, но это , а не количество байтов в памяти - объект String будет иметь другие внутренние переменные в дополнение к самим данным.

Также помните, что все классы и объекты могут динамически изменяться в Ruby во время выполнения, что может изменять объем используемой памяти.Просто подумайте о методах, которые добавляют дополнительные переменные экземпляра к объекту, которого раньше не было.

2 голосов
/ 03 июля 2010

Если вы пытаетесь сделать вещи совместимыми с вашим Delphi-кодом, то поиск Ruby's размеров вам совсем не поможет. Вам нужно взять Delphi's размеров в вашем коде Ruby. Поскольку Delphi имеет статическую типизацию, SizeOf действительно удобно - просто составьте таблицу типов Delphi и соответствующих размеров. Если у вас есть массив, умножьте значение из таблицы на количество элементов.

1 голос
/ 30 июня 2010

Скалярные типы определены в ruby.c. Я не знаю способа узнать их ширину из Ruby.

Добавлено:

Вы можете написать программу на C, которая использует ruby.c для определения скалярных размеров. Затем позвоните в вашу C-программу с вашего Ruby sw.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...