当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Julia =用法及代码示例


用法:

=

= 是赋值运算符。

  • 对于变量 a 和表达式 ba = b 使 a 引用 b 的值。
  • 对于函数 f(x)f(x) = x 定义一个新的函数常量 f ,或者如果 f 已经定义,则向 f 添加一个新方法;此用法等效于 function f(x); x; end
  • a[i] = v 调用 setindex! (a,v,i)
  • a.b = c 调用 setproperty! (a,:b,c)
  • 在函数调用中,f(a=b)b 作为关键字参数 a 的值传递。
  • 在带逗号的括号内,(a=1,) 构造一个 NamedTuple

例子

a 分配给 b 不会创建 b 的副本;而是使用 copy deepcopy

julia> b = [1]; a = b; b[1] = 2; a
1-element Array{Int64, 1}:
 2

julia> b = [1]; a = copy(b); b[1] = 2; a
1-element Array{Int64, 1}:
 1

传递给函数的集合也不会被复制。函数可以修改(变异)其参数所引用的对象的内容。 (执行此操作的函数名称通常以'!' 为后缀。)

julia> function f!(x); x[:] .+= 1; end
f! (generic function with 1 method)

julia> a = [1]; f!(a); a
1-element Array{Int64, 1}:
 2

赋值可以并行操作多个变量,从一个可迭代对象中获取值:

julia> a, b = 4, 5
(4, 5)

julia> a, b = 1:3
1:3

julia> a, b
(1, 2)

赋值可以对多个变量串联操作,并会返回right-hand-most表达式的值:

julia> a = [1]; b = [2]; c = [3]; a = b = c
1-element Array{Int64, 1}:
 3

julia> b[1] = 2; a, b, c
([2], [2], [2])

越界索引处的分配不会增加集合。如果集合是 Vector ,则可以使用 push! append! 来种植它。

julia> a = [1, 1]; a[3] = 2
ERROR: BoundsError: attempt to access 2-element Array{Int64, 1} at index [3]
[...]

julia> push!(a, 2, 3)
4-element Array{Int64, 1}:
 1
 1
 2
 3

分配[] 不会从集合中消除元素;而是使用 filter!

julia> a = collect(1:3); a[a .<= 1] = []
ERROR: DimensionMismatch("tried to assign 0 elements to 1 destinations")
[...]

julia> filter!(x -> x > 1, a) # in-place & thus more efficient than a = a[a .> 1]
2-element Array{Int64, 1}:
 2
 3

相关用法


注:本文由纯净天空筛选整理自julialang.org 大神的英文原创作品 = — Keyword。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。