julialang中的循环模拟

julialang中的循环模拟,julia,Julia,我基本上是fortran语言的人。我在用fortran语言编写一个朱莉娅式的循环模拟程序,这让我发疯了。 顺便说一下,goto语句在这种天真的尝试中不起作用: x == y ? continue : goto mark1 mark1: println("hello") 它提出: syntax: extra token "mark1" after end of expression 我不完全确定这是否是一个格式良好的问题,但在实现本地goto时存在一个问题:。甚至还有一个原型实现的pull

我基本上是fortran语言的人。我在用fortran语言编写一个朱莉娅式的循环模拟程序,这让我发疯了。 顺便说一下,goto语句在这种天真的尝试中不起作用:

x == y ? continue : goto mark1

mark1: 
println("hello")
它提出:

syntax: extra token "mark1" after end of expression

我不完全确定这是否是一个格式良好的问题,但在实现本地goto时存在一个问题:。甚至还有一个原型实现的pull请求,但它有点停顿。

在一个函数中,
@goto
现在已经实现了

function example(y)
    for x in 1:1000
        x == y ? continue : @goto mark1
    end

    @label mark1
    println("hello")
end
有关更多信息,请参见下文:



尽管传统上不考虑循环,但是
@goto
@label
宏可用于更高级的控制流。一种使用情形是,一个部件的故障应导致整个功能的重试,这在输入验证中通常很有用:

function getsequence()
    local a, b

@label start
    print("Input an integer: ")
    try
        a = parse(Int, readline())
    catch
        println("Sorry, that's not an integer.")
        @goto start
    end

    print("Input a decimal: ")
    try
        b = parse(Float64, readline())
    catch
        println("Sorry, that doesn't look numeric.")
        @goto start
    end

    a, b
end
然而,使用递归,这个用例通常更清晰:

function getsequence()
    local a, b

    print("Input an integer: ")
    try
        a = parse(Int, readline())
    catch
        println("Sorry, that's not an integer.")
        return getsequence()
    end

    print("Input a decimal: ")
    try
        b = parse(Float64, readline())
    catch
        println("Sorry, that doesn't look numeric.")
        return getsequence()
    end

    a, b
end

虽然两个例子做的事情相同,但第二个更容易理解。但是,第一种方法性能更好(因为它避免了递归调用)。在大多数情况下,通话费用并不重要;但是在有限的情况下,第一种形式是可以接受的。

我的意思是,基本上我想复制一些类似的东西:
doi=1,50…[计算一些东西]。。。如果(条件等式为真)循环其他。。。如果结束,则结束
。这就是我用Fortran实现它的方法,但是julia呢?我也看到过,但看起来很神秘,尽管谷歌搜索了一下,但我并不真正理解Fortran中的
cycle
,所以很难给你一个好的答案。然而,Julia对循环有C风格的
break
continue
关键字,这可能会帮助您做您想做的事情:。如果有帮助,在fortran中,
cycle
in fortran=
continue
in C和
exit
in fortran=
break
in CAh,是的。我想这基本上回答了这个问题,但我会让OP来决定。这不等于
x>y&&continue