Julia中带try/catch的while循环输入校验报UndefVarError求助
错误原因
Julia的作用域隔离规则中,try代码块内部定义的变量属于块级局部变量,仅在块内部生效,块外的后续代码无法访问,因此你输入合法值后执行println时会报变量未定义错误。
修正后代码
提前在外层作用域声明变量即可解决作用域问题,同时补充了你原本要求的1~8范围校验逻辑:
# 外层预先声明变量,打通作用域访问权限 selected_row = 0 while true try input_str = readline() selected_row = parse(Int8, input_str) # 追加范围校验,符合需求的[1,8]区间限制 if 1 ≤ selected_row ≤ 8 break else @warn "请输入1到8之间的有效数字" end catch e if isa(e, LoadError) || isa(e, ArgumentError) @warn "请输入1到8之间的有效数字" end end end println("你选择了 (C|R) ($selected_row)")
内容的提问来源于stack exchange,提问作者hcp
相关产品推荐
相关产品推荐

