Может ли аргумент иметь тип «список»? - PullRequest
2 голосов
/ 08 июня 2011

Я хочу иметь аргумент, подобный этому:

<cfargument 
  name="exclude" 
  type="list" 
  required="false" 
  default="-1" 
  hint="A list of source IDs that should be excluded"
>

Я не вижу этого в документах на http://livedocs.adobe.com/coldfusion/8/htmldocs/help.html?content=Tags_a-b_6.html, я действительно им не доверяю.

Кто-нибудь знает, возможно ли это, или мне придется преобразовывать в массив?

В данный момент я получаю сообщение об ошибке:

Аргумент EXCLUDE, переданный в функцию renderSelectSource, не относится к списку типов.

Не жалуется, что «список» не является допустимым типом, но, возможно, это просто плохое сообщение об ошибке.

Ответы [ 2 ]

12 голосов
/ 08 июня 2011

Тип в этом случае будет "строка". Список - это просто строка.

Вы можете выполнить преобразование в массив ... но если он не купит вам то, чего я не вижу, я не вижу проблемы с простым объявлением аргумента в виде строки.

1 голос
/ 08 июня 2011

Что я обычно делаю в этой ситуации, так это допускаю строку с разделителями (то есть список) или массив.В частности, это позволяет вам иметь дело с ситуациями, когда значение вашего массива содержит разделитель (то есть запятую).Например:

<cffunction name="myFunction" output="false" access="public" returntype="any" hint="">
    <cfargument name="multiValuedArg" type="any" required="true"/>
    <cfif isSimpleValue(arguments.multiValuedArg)>
        <cfset arguments.multiValuedArg = listToArray(arguments.multiValuedArg)>
    <cfelseif NOT isArray(arguments.multiValuedArg)>
        <cfthrow type="java.lang.IllegalArgumentException"
            message="'multiValuedArg' argument must be an array or comma delimited list">
    </cfif>
</cffunction>
...