我正在编写Julia脚本,该函数中有一个while循环。在while循环中有一个变量。实际上,那行引发了关于未定义变量的错误。
错误在第65行
function cleanTexLoop(fileName::String)
f = open(fileName, "r")
while ! eof(f)
line = readline(f), <-- line 65
#line = sentenceFilter(line)
println(line)
end
close(f)
end
该函数打开一个文件,该文件被传递到循环中。循环一直运行到文件末尾。循环时,逐行读取文件。每次读取时,该行都存储在变量line
中,文件前进。在正确的版本中,没有注释掉一行(66),但是对于调试来说,它是注释掉的。然后将line
用作过滤器的输入,该过滤器会在再次将其存储为line
之前修改该行。该脚本的最终版本将具有四个过滤器,但现在,我很乐意让它仅使用零个过滤器来运行。
(请注意,用户已经指出了一个逗号,看了几个小时的代码仍在暗示着我。我正在等待那个用户写下答案)
cleanTexLoop(“ test.tex”)
错误:UndefVarError:未定义行 Stacktrace:
[1]位于/home/nero/myScripts/latexCleaner.jl:65
的cleanTexLoop(:: String) [2] ./REPL.jl:97处的宏扩展[内联]
[3](:: Base.REPL。## 1#2 {Base.REPL.REPLBackend})()在> ./event.jl:73
我以前写过这个版本的另一个版本,该版本可以完整使用,但是我需要对其结构进行一些实质性更改,以便更好地适应将来的计划。请注意,其中一些名称不符合常规的命名约定。即,我使用“!”当实际上没有更改任何变量时。
function CleanTexLoop(fileName::String,regX::String,sub::String)
f = open(fileName, "r")
while ! eof(f)
println(applySub!(f,regX,sub))
end
close(f)
end
function applySub!(file::IOStream,regX::String,sub::String)
return replace(
readline(file),
Base.Regex(regX),
Base.SubstitutionString(sub)
)
end
x = 0
while x < 4
y = x
println(y)
x = x+1
end
正如预期的那样,此打印结果从零到一,并且据我所知,可以代表我在做什么。在这两种情况下,我都将一些变量传递到循环中,该循环通过某种动作定义了循环内的另一个变量,然后将其打印出来。为什么行之有效,而另一个却不行。
从查找此问题开始,似乎在循环或类似环境之外定义变量时,由于无法将其传递到环境中而导致问题出现。但是,这不是我的情况。就我而言,该变量是首次定义。
答案 0 :(得分:0)
如评论中所述,问题是一个错误的逗号。