2014-12-26 1 views
-1

Я хотел бы привести в порядок своего Eralng кода, я нашел там уже много выпуска следующие:Эрла: заполнитель в кортеже (или списке)

A = {Врет, _Tv0, _Tv1, Tv2, ТВ3}

Есть ли способ очистить код как быть: A = {Tid, SomewayReplace (4)} ???

Update1:

как @Pascal например, Есть ли способ простой код А = {Т, _, _, _, _, _} хотели быть А = {T, SomewayReplace (4)}, чтобы заменить этот символ 4 _ ???

Update2

в реальном проекте, если некоторые записи включают в себя много элементов, я нашел, что это заставит меня повторить написание символа _, поэтому мне интересно, если есть способ это просто ???

+1

Что вы имеете в виду? Пожалуйста, скажите ясно. – BlackMamba

ответ

0

Written A = Что-то означает, что вы пытаетесь сопоставить A с чем-то или если A несвязано, назначьте что-то A. В любом случае что-то должно быть определено.

Вы можете найти несколько ярлыков при написании. Например, если вы хотите присвоить результат Funtion к А, убедитесь, что результат является кортеж из 5 элементов и присвоить первый элемент в Т, то вы можете написать:

A = {T,_,_,_,_} = f(Param). 

Значение _T точно такая же, как любая переменная. Он просто говорит компилятору, чтобы он не выдавал предупреждение, если эта переменная не используется в коде. Это часто встречается при сопоставлении шаблонов, когда вы хотите игнорировать значение переменной, но все же сохраняете след ее значения.

[править]

Это не возможно писать {T, SomewayReplace(4)}, но вы можете использовать записи. Запись - это тегированный кортеж (первый элемент - это атом, который идентифицирует эту запись. Он не короче, чем заполнитель для небольших кортежей, но он более ясен, вам не нужно запоминать местоположение информации в вашем кортеже, и это легче изменить код, когда вам нужно добавить новый элемент в кортеже синтаксис будет

-record(mytuple,{field1,...,fieldx,...}. ... A = #mytuple{fieldx = T} = f(Param).

waerning:. Записи управляются компилятором, так что все должно быть известно во время компиляции (# mytuple {Fieldx = T} является незаконным, Fieldx не может быть переменной).

+0

да Я знаю, что разница между _ и _T, я обновил проблему, вы что-то придумали ??? – haoxian

+0

Я вижу только записи. – Pascal

+0

Да, спасибо, мне просто интересно, можно ли это сделать. Благодарю. – haoxian

0

Почему бы не использовать запись? Тогда вы будете только соответствовать полям, которые вы хотите извлечь. В качестве побочного эффекта вы упрощаете отладку кода , sinc e вы вынуждены называть кортеж, сначала имея атом.

Смежные вопросы