我收到错误:
invalid command name "tcl::mathfunc::expr"
尝试以下代码分支时。 $ env(EXB_DESIGN_NAME)的值设置为“seville2”。我希望代码不应该分支到'if'条件。
if {expr("$env(EXB_DESIGN_NAME)" ne "seville") || expr("$env(EXB_DESIGN_NAME)" ne "seville2")} { -------}
答案 0 :(得分:3)
这就是你应该写它的方式(这里的引号对于变量也是可选的):
if {"$env(EXB_DESIGN_NAME)" ne "seville" || "$env(EXB_DESIGN_NAME)" ne "seville2"} {
#Do something
}
如果你绝对想要使用expr
(因为if
使用expr
,这里不太必要),它会是这样的:
if {[expr {"$env(EXB_DESIGN_NAME)" ne "seville"}] || [expr {"$env(EXB_DESIGN_NAME)" ne "seville2"}]} {
#Do something
}
或
if {[expr {"$env(EXB_DESIGN_NAME)" ne "seville" || "$env(EXB_DESIGN_NAME)" ne "seville2"}]} {
#Do something
}
但是我建议不要像if
那样编写像这样的代码,因为用我提到的第一种方式编写代码要简单得多。
如果要检查很多字符串,可以使用ni
(对于'not in'):
set mylist {"seville" "seville2"}
if {$env(EXB_DESIGN_NAME) ni $mylist} {
#Do something
}
答案 1 :(得分:3)
Tcl将表达式中的函数转换为对<?xml version="1.0" encoding="utf-8"?>
<madcow
xsi:schemaLocation="urn:Annotation D:\projects\DELOS\Annotation.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns ="urn:Annotation"
kind="withContent" media="text">
<metadata>
<author>ferro697702212</author>
<title> Eine weitere Annotation </title>
<creationDate>18/11/2009 10.26.09</creationDate>
<modificationDate>18/11/2015 10.26.09</modificationDate>
<sourceHttp>687474703a2f2f7777772e676f6f676c652e69742f</sourceHttp>
<type>example</type>
<public>true</public>
</metadata>
<annotationBody>
<contents id="1">
<textContent>Das ist ein Beispieltext für eine Annotation</textContent>
<attachments>
<attachedImage> file:://A/B/C</attachedImage>
</attachments>
</contents>
<contents id="2">
<md:textContent> Eine weitere Annotation </md:textContent>
<attachments>
<attachedAudio>http://www.h_da.de/xml/test.mp3</attachedAudio>
</attachments>
</contents>
<textSelection>
<path>BODY/CENTER/FORM/TABLE[2]/TBODY/TR[2]/TD/FONT/LABEL[3],23,6</path>
<contentRef>1</contentRef>
</textSelection>
</annotationBody>
</madcow>
命名空间中等效命令的调用。
但是,您真正的问题是您在已经是表达式的上下文中使用tcl::mathfunc
作为函数!你不需要那种复杂性。这意味着我们可以改变:
expr
成:
if {expr("$env(EXB_DESIGN_NAME)" ne "seville") || expr("$env(EXB_DESIGN_NAME)" ne "seville2")} { -------}
它更短。它更清楚。这是正确的......