【问题标题】:How to restart a function when an if condition is met满足 if 条件时如何重新启动函数
【发布时间】:2021-07-24 15:55:42
【问题描述】:

当 if 条件满足或不满足时,我如何“重新启动”我的函数。
在这个伪代码中,如果满足 if 条件,我想停止函数正在执行的操作并重新启动。

function example()

     .
     .
     .

 for i in 1:N
        for j in 1:N
            if Mat[i,j] > 1
                Mat[i,j] += restart? # Here the process should restart,
            end
        end
    end

【问题讨论】:

  • 这可能意味着一些不同的事情。你能详细说明吗?你的意思是要跳出循环,重新开始循环,跳出整个函数,还是再次递归调用函数?
  • @cbk 我想重启循环

标签: function if-statement julia


【解决方案1】:

返回值不是添加额外的分支和使函数复杂化,而是为 I.M.H.O. 中的控制流提供了强大的能力。更清洁的时尚。 添加一点单独的功能很简单

function do_thing_once!(mat)
    # Returns true if successful
    for i in 1:N
        for j in 1:N
            if mat[i,j] > 1
                mat[i,j] += 123
                return false
            end
        end
    end
    return true
end

function do_all_things!(mat)
    success = false
    while !success
        success = do_thing_once!(mat)
    end
end

【讨论】:

  • 直接使用return do_thing_once!(mat)而不是return false就不需要第二个函数
  • 当然,请注意递归函数,因为 Julia 缺乏尾调用优化(还)
  • 是的,但是如果函数应该返回一些东西,这种方法是不实用的
  • ``` while not ``` 不是一个有效的命令(或者换句话说,Julia 将“not”视为一个变量)。我错过了一个包裹吗? @MikaelÖhman
  • 糟糕!我最近一直在编写很多 python 代码。我希望现在应该修复
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-12
  • 2019-03-14
  • 2016-07-30
  • 2018-08-07
  • 2021-02-23
相关资源
最近更新 更多