[erlang-questions] Checking Types at Runtime

Torben Hoffmann torben.lehoff@REDACTED
Wed Jul 13 11:42:01 CEST 2011

For the basic types you can you a when guard in the function clauses (or
case clauses):

my_magic(#user{password=PW}) when is_binary(PW) -> ...

But that is probably not enough for you.


On Wed, Jul 13, 2011 at 01:26, Tristan Sloughter <
tristan.sloughter@REDACTED> wrote:

> I'm pretty sure this isn't possible but I wanted to be sure before working
> around the lack of it.
> if I have a type and record like:
> -type password() :: binary().
> -record(user, {username :: binary(),
>                     password  :: password()}.
> At run time there is no way to tell a field is suppose to be of some type
> during runtime, right?
> Basically I'd like to be able to have generic or generated create functions
> for records that may have to modify arguments (like a password has to be
> encrypted from the string provided) when creating the record. So the create
> function would pass each field, its value and its type to a transform
> function that matches on type and returns the appropriately modified value.
> Any ideas on how to do this with type definitions or do I need to use
> tuples and an atom like {Type, Value} for the value of every field to
> achieve this?
> Thanks,
> Tristan
> _______________________________________________
> erlang-questions mailing list
> erlang-questions@REDACTED
> http://erlang.org/mailman/listinfo/erlang-questions

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20110713/8877b985/attachment.htm>

More information about the erlang-questions mailing list