Когда я должен использовать # в ColdFusion?

Я не знаю почему, но ответ @Sylvain Defresne не работает для меня.

git branch new-branch-name origin/old-branch-name
git push origin --set-upstream new-branch-name
git push origin :old-branch-name

Я должен сбросить восходящий поток, а затем снова установить поток. Вот как я это сделал.

git checkout -b new-branch-name
git branch --unset-upstream
git push origin new-branch-name -u
git branch origin :old-branch-name
15
задан Jeromy French 8 March 2013 в 14:46
поделиться

6 ответов

Думаю, будет проще сказать, где НЕ использовать #. Единственное место - это операторы cfif и операторы cfset, где вы не используете переменную для построения строки в кавычках. Вам нужно будет использовать знак # почти во всех других случаях.

Пример, где вы не собираетесь его использовать:

<cfset value1 = 5>
<cfset value2 = value1/>

<cfif value1 EQ value2>
    Yay!!!
</cfif>

<cfset value2 = "Four plus one is " & value1/>

Примеры того, где вы будете использовать #:

in a cfset where the variable is surrounded by quotes
<cfset value1 = 5>
<cfset value2 = "Four plus one is #value1#"/>

the bodies of cfoutput, cfmail, and cffunction (output="yes") tags
<cfoutput>#value2#</cfoutput>
<cfmail to="e@example.com" from="e@example.com" subject="x">#value2#</cfmail>
<cffunction name="func" output="yes">#value2#</cffunction>    

in an attribute value of any coldfusion tag
<cfset dsn = "myDB"/>
<cfquery name="qryUsers" datasource="#dsn#">

<cfset value1 = 5>
<cfset value2 = 10/>
<cfloop from="#value1#" to="#value2#" index="i">

<cfqueryparam value="#value1#" cfsqltype="cf_sql_integer"/>

EDIT:

Один чудак Я только что заметил, что условные циклы позволяют использовать имя переменной со знаком # и без него.

<cfset value1 = 5>

<cfloop condition = "value1 LTE 10">
    <cfoutput>#value1#</cfoutput><br>
    <cfset value1 += 1>
</cfloop>

<cfset value1 = 5>

<cfloop condition = "#value1# LTE 10">
    <cfoutput>#value1#</cfoutput><br>
    <cfset value1 += 1>
</cfloop>
13
ответ дан 1 December 2019 в 02:29
поделиться

Вот что Adobe говорит по этому поводу:

Использование цифровых знаков

7
ответ дан 1 December 2019 в 02:29
поделиться

Синтаксис # ... # позволяет встроить выражение в строковый литерал. К сожалению, ColdFusion не совсем согласен с тем, что такое строка, а что выражение. Джейсон предоставил хороший список примеров того, когда использовать (или не использовать) #.

3
ответ дан 1 December 2019 в 02:29
поделиться

Интерполяция строк:

<cfset name = "Danny" />
<cfset greeting = "Hello, #name#!" />
<!--- greeting is set to: "Hello, Danny!" --->

Автоматическая интерполяция строк в cfquery :

<cfset username = "dannyo'doule" ?>
<cfquery ...>
    select u.[ID]
    from [User] u
    where u.[Username] = '#username#'
</cfquery>
<!--- the query is sent to the server (auto-escaped) as: --->
<!--- select u.[ID] from [User] u where u.[Username] = 'dannyo''doule' --->
<!--- note that the single-quote in the username has been escaped --->
<!--- by cfquery before being sent to the database server --->

Передача сложных аргументов / атрибутов в CFML:

<cfset p = StructNew() />
<cfset p.firstName = "Danny" />
<cfset p.lastName = "Robinson" />
<cfmodule template="modules/view/person.cfm" person="#p#">
<!--- the variable Attributes.person will be --->
<!--- available in modules/view/person.cfm --->

Для передачи сложных аргументов требуется # подписывает только в CFML, но не CFScript. Кроме того, вы можете передавать любые типы значений: простые значения, массивы, структуры, cfcomponents, cffunctions, java-объекты, com-объекты и т. Д.

Во всех этих случаях текст между знаками # не должно быть именем переменной . Фактически, это может быть любое выражение. Конечно, для строковой интерполяции выражение должно давать простое значение, но для аргумента / атрибута, передаваемого в CFML,

5
ответ дан 1 December 2019 в 02:29
поделиться

Рискуя показаться умником, практическое правило: используйте # вокруг переменных или выражений только тогда, когда не этого не делает дают правильный результат . Или: если они вам не нужны, не используйте их.

Мне нравится ответ Джейсона.

0
ответ дан 1 December 2019 в 02:29
поделиться
<div style="cursor:pointer" onclick="document.location='http://www.google.com'">Content Goes Here</div>
атрибут, вы можете легко ввести 6, но если вы хотите использовать переменную, вам нужно использовать символы #. Теперь, если вы находитесь в теге cfloop, устанавливающем параметр запроса, вы не можете ввести запрос в этот атрибут, нет способа ввести запрос, поэтому символы # не требуются.

Аналогично в cfdump , вы можете выгрузить статический текст, поэтому, если вы хотите сбросить содержимое переменной, вам нужно будет использовать символ #. Эта проблема, как правило, исправляется сама собой, но я чувствую вашу боль, ваши ученики, вероятно, разочарованы тем, что не существует подхода «ВСЕГДА ИСПОЛЬЗУЙТЕ ИХ» или «НИКОГДА НЕ ИСПОЛЬЗУЙТЕ ИХ» ... к сожалению, это не так, единственное, что верно, только один способ внутри кавычек будет правильным. Так что, если это не работает, посмотрите на него внимательно и долго и подумайте про себя: "

0
ответ дан 1 December 2019 в 02:29
поделиться