在python里面如果一行代码太长,可以加\拼接,例如
A = 1 \
+ 1
与
A = 1 + 1
是等价的。
Julia有没有类似的用法,用来对一条语句换行增加可读性?
在python里面如果一行代码太长,可以加\拼接,例如
A = 1 \
+ 1
与
A = 1 + 1
是等价的。
Julia有没有类似的用法,用来对一条语句换行增加可读性?
Julia 只要前面一行没有结束,就会连着下一行一起
A = 1 +
1
换句话说,下面这个其实是两行代码。因为 A = 1
可以正常结束。
A = 1
+ 1
Julia是通过什么判断前面一行是否结束的呢?我举的这个例子是简单了点,实际编程可能会碰见更复杂的语句,那如果不知道区分规则,就很容易出错。
看一行是否可以完整解析
贴 so 上的类似讨论,where
直接另起一行会报错,比如
julia> function nzcols(b::SubArray{T,2,P,Tuple{UnitRange{Int64},UnitRange{Int64}}})
where {T,P<:SparseMatrixCSC}
return collect(i+1-start(b.indexes[2])
for i in b.indexes[2]
if b.parent.colptr[i]<b.parent.colptr[i+1] &&
inrange(b.parent.rowval[nzrange(b.parent,i)],b.indexes[1]))
end
ERROR: syntax: space before "{" not allowed in "where {"
要让语句不完整,换行才有效,比如
julia> function nzcols(b::SubArray{T,2,P,Tuple{UnitRange{Int64},UnitRange{Int64}}}
) where {T,P<:SparseMatrixCSC}
return collect(i+1-start(b.indexes[2])
for i in b.indexes[2]
if b.parent.colptr[i]<b.parent.colptr[i+1] &&
inrange(b.parent.rowval[nzrange(b.parent,i)],b.indexes[1]))
end
nzcols (generic function with 3 methods)
原因: If the parser has a “complete” syntax at the end of a line, it’ll use that and move on.
可读性还行,就是很麻烦