朱莉娅的(x:y)运营商

don*_*rog 8 julia ijulia-notebook

我想了解这段代码:

  r = (1:10) - (4/1)
    println(r)
Run Code Online (Sandbox Code Playgroud)

输出:

-3.0:1.0:6.0

我明白了为什么我得到了-36.但为什么我在中间得到这个值(1.0)?朱莉娅如何计算它?或者我如何谷歌呢?

Rez*_*lan 12

(first:step:last)语法表示RangeJulia中的类型

typeof(1:10) # => UnitRange{Int32}
Run Code Online (Sandbox Code Playgroud)

如果省略步骤部分,则默认为假定 1

1:10 == 1:1:10 # => true
Run Code Online (Sandbox Code Playgroud)

A Range是系列的紧凑视图

collect(1:10) # => 10-element Array{Int32,1}:
#  1
#  2
#  3
#  4
#  5
#  6
#  7
#  8
#  9
# 10
Run Code Online (Sandbox Code Playgroud)

因此,预期Range类型和Vector遵循相同的规则,例如当您添加如下的常量值时:

collect(1+(1:10))==collect(1:10)+1 # => true
Run Code Online (Sandbox Code Playgroud)

或者甚至添加两个向量会给你添加它们的范围表示的相同结果,如下所示:

collect((1:10)+(1:10))==collect(1:10)+collect(1:10) # => true
Run Code Online (Sandbox Code Playgroud)