Julia 1.0+;中有哪些不同的for循环方法;?

Julia 1.0+;中有哪些不同的for循环方法;?,julia,Julia,我正在寻找不同的方式写循环在朱莉娅!我知道这是一个基本问题,但我想知道一些不同的选项是什么,以及在性能方面是否有优势/劣势。这是直接从以下方面得出的: for循环使常见的重复评估习惯用法更易于编写。由于向上和向下计数与上面的while循环非常常见,因此可以使用for循环更简洁地表示: julia> for i = 1:5 println(i) end 1 2 3 4 5 这里的1:5是一个范围对象,表示数字序列1,2,3,4,5。for循环迭代这些值,

我正在寻找不同的方式写循环在朱莉娅!我知道这是一个基本问题,但我想知道一些不同的选项是什么,以及在性能方面是否有优势/劣势。

这是直接从以下方面得出的:

for循环使常见的重复评估习惯用法更易于编写。由于向上和向下计数与上面的while循环非常常见,因此可以使用for循环更简洁地表示:

julia> for i = 1:5
           println(i)
       end
1
2
3
4
5
这里的
1:5
是一个范围对象,表示数字序列
1,2,3,4,5
。for循环迭代这些值,将每个值依次分配给变量i。先前while循环形式和for循环形式之间的一个相当重要的区别是变量可见的范围。如果变量
i
未在另一个作用域中引入,则在for循环形式中,它仅在for循环内部可见,而不在for循环外部/之后可见。您需要一个新的交互式会话实例或不同的变量名来测试:

julia> for j = 1:5
           println(j)
       end
1
2
3
4
5

julia> j
ERROR: UndefVarError: j not defined
有关变量作用域及其在Julia中的工作方式的详细说明,请参见

通常,for循环构造可以迭代任何容器。在这些情况下,在或
通常用于代替
=
,因为它使代码读得更清楚:

julia> for i in [1,4,0]
           println(i)
       end
1
4
0

julia> for s ∈ ["foo","bar","baz"]
           println(s)
       end
foo
bar
baz
本手册后面的章节将介绍和讨论各种类型的iterable容器(例如,请参见)。

有关回路 赞成:完全灵活的有中断和继续

Con:不返回,必须在开始时指定迭代器

While循环 赞成:完全灵活的有中断和继续

Con:如果必须手动处理迭代器,则不返回

标签+转到 请不要将此用于循环

生成器理解/向量理解 Pro:有返回值,continue用filter子句表示,采用lazy(生成器)和eager(向量)形式,可以创建多维返回值

缺点:长时间都很难看,不能休息

广播 Pro:连续表示多个输入的转换,返回值与输出结构匹配。可以用一个点表示,并支持循环融合

缺点:不休息不休息。编写body意味着编写一个函数。在
Ref
中将要广播的内容包装为标量有点难看

Map/pmap/asyncmap 以块形式书写

Pro:可以轻松更改为分布式或异步运行,并具有返回值

缺点:没有休息,就没有继续

foreach
功能 它很像map,但没有返回值。所以节省分配

除了相同的优点和缺点