如何修复程序中的未定义变量?

How do I fix an undefined variable in my program?

我是 AppleScript 的初学者。我正在尝试开发一个可以生成实际随机数的程序。当我设置将用于生成随机数的数字的值时,编辑器给我一个错误:

The variable numberOne is not defined.

我知道这是什么意思,但我不知道为什么没有定义。有人可以帮忙吗?

我试过看看是否只有字符串可以代替文本,但似乎行不通。可能有一个非常简单的解决方法,但正如我所说,我是初学者。

on variableValue()
    set numberOne to text returned of (display dialog "Variable One:" default answer "" with icon note buttons {"Cancel", "Continue"} default button 2 with title "Random Number Generator 3") as string
    set numberTwo to text returned of (display dialog "Variable Two:" default answer "" with icon note buttons {"Cancel", "Continue"} default button 2 with title "Random Number Generator 3") as string
    set numberThree to text returned of (display dialog "Variable Three:" default answer "" with icon note buttons {"Cancel", "Continue"} default button 2 with title "Random Number Generator 3") as string
    set numberFour to text returned of (display dialog "Variable Four:" default answer "" with icon note buttons {"Cancel", "Continue"} default button 2 with title "Random Number Generator 3") as string
    set numberFive to text returned of (display dialog "Variable Five:" default answer "" with icon note buttons {"Cancel", "Continue"} default button 2 with title "Random Number Generator 3") as string
    set useSameValues to button returned of (display alert "Use same values?" message "If you re-generate a new number, do you want to use the same values?" as critical buttons {"Cancel", "No", "Yes"} default button 3)
    if useSameValues = "No" then
        set useSameValuesTwo to "false"
    else if useSameValues = "Yes" then
        set useSameValuesTwo to "true"
    end if
end variableValue
variableValue()
on randomNumber()
    -- The line of code just beneath this text is where the error shows up (This is my first program that utilizes handlers, so something could be wrong there).
    set numberSix to (numberOne + numberTwo + numberThree + numberFour + numberFive)
    set numberSeven to (numberSix * (random number from 1 to (random number from 2 to 100)))
    set possibleValueOne to (random number from 1 to 5)
    if possibleValueOne = 1 then
        set numberEight to (numberSeven - numberOne)
    else if possibleValueOne = 2 then
        set numberEight to (numberSeven - numberTwo)
    else if possibleValueOne = 3 then
        set numberEight to (numberSeven - numberThree)
    else if possibleValueOne = 4 then
        set numberEight to (numberSeven - numberFour)
    else if possibleValueOne = 5 then
        set numberEight to (numberSeven - numberFive)
    end if
    set numberNine to (numberEight - 100000)
end randomNumber
randomNumber()

在 AppleScript 中(像大多数语言一样),变量有一个 scope,这是在任何给定的脚本对象中识别声明的标识符的地方。在处理程序内声明的变量是该处理程序的局部变量,不存在于处理程序之外,因此您需要提供一些方法使它们在其他地方可用。有几种方法可以做到这一点,例如声明全局变量或 属性 ,或者为调用者提供处理程序 return 值。

在您的示例中,在您的 variableValue() 处理程序中声明的变量在处理程序外部不可用,因此将这些变量声明为 global[=19= 可能是最简单的方法],例如在脚本开头添加以下声明:

global numberOne, numberTwo, numberThree, numberFour, numberFIve