【问题标题】:autohotkey assign a text expression to a variableautohotkey 将文本表达式分配给变量
【发布时间】:2013-07-04 03:06:52
【问题描述】:

在自动热键脚本中,我试图将文本字符串分配给变量。谁能发现为什么这不起作用,它看起来就像一些提供的示例?我不再需要这个变量了,但现在我只是好奇我做错了什么......

myvar := % "foo" ;创建全局变量 myvar,但没有内容

我知道你可以直接说 myvar = foo 但是将引号从固定的文本字符串中删除只会让我畏缩。我什至让它工作,但在进行“一些无害的美容编辑”之前没有保存我的文件。我点击“H”任务 时钟附近的图标,使用菜单文件/显示变量来验证空内容...

【问题讨论】:

    标签: string variables autohotkey


    【解决方案1】:

    好的,所以我们给一个变量赋值:

    eval_this:= "harry"
    

    如果你这样做,你只是读取变量的内容:

    msgbox %eval_this%   ;=harry
    

    当然,这里没有评估文本 - “eval_this”只是给 ahk 的文本:

    msgbox eval_this     ;= eval_this
    

    这种方法称为“强制表达”——这是您想要做的。它尝试像读取代码一样读取文本字符串。它不是读取任何变量的内容,而是查看文本并强制它成为变量(这有点像,但不是真的)

    msgbox % eval_this   ;= harry
    

    这也让我们大吃一惊,你可以看到我们是如何读取变量的:

    test := eval_this    
    msgbox %test%        ;=harry
    

    同样的事情,不同的方法(强制文本变成变量):

    test = % eval_this
    msgbox %test%        ;=harry
    

    考虑一下,我们将两个文本字符串强制转换为它们的实际值

    eval_this := "harry"
    this_too := " and bob"
    
    test = % eval_this this_too
    msgbox %test%               ;= harry and bob
    

    好的,现在您已经掌握了所有这些,这是一个实际的应用程序。我们将强制文本字符串的值成为一个变量。由于我们实际上已经定义了“警报”是什么,那么 gosub 将调用该定义。将其弹出到脚本中并运行它:

    eval_this := "alert"
    
    gosub % eval_this
    exit  ;we are finished with the demo, so end here
    
    alert:
        msgbox harry
    return
    

    【讨论】:

      猜你喜欢
      • 2014-11-25
      • 1970-01-01
      • 1970-01-01
      • 2014-07-20
      • 1970-01-01
      • 2017-12-20
      • 1970-01-01
      • 2013-01-20
      • 2010-11-17
      相关资源
      最近更新 更多