Краткий ответ: да, на момент написания статьи это будет работать. Лучший ответ таков: в будущем это может не сработать, и природа вопроса касается меня.
Безопасно использовать record_info/2
, хотя полагаться на заказ может быть рискованно, и, честно говоря, я не могу вспомнить ситуацию, когда это имеет смысл, что подразумевает, что вы решаете проблему неправильно. Можете ли вы поделиться более подробной информацией о том, что именно вы пытаетесь достичь, чтобы мы могли помочь вам выбрать лучший метод? Может быть, все, что вам нужно, - это простое сопоставление с образцом.
Что касается примера с tuple_to_list/1
, я приведу цитату из «Программирование Эрланга» Чезарини и Томпсона:
"... что бы вы ни делали, никогда, никогда не используйте представления кортежей записей в ваших программах. Если вы это сделаете, авторы этой книги откажутся от вас и отрицают какое-либо участие в оказании вам помощи в изучении Erlang."
Есть несколько веских причин, в том числе:
- Ваш код станет хрупким - если вы позже измените количество полей или их порядок, ваш код сломается.
- Нет гарантии, что внутреннее представление записей будет продолжать работать таким же образом в будущих версиях erlang.