美文网首页
Julia编程11:变量作用域 Scope of Variabl

Julia编程11:变量作用域 Scope of Variabl

作者: 生信探索 | 来源:发表于2024-06-03 22:57 被阅读0次

There are two main types of scopes in Julia,global* scope* andlocal* scope*.

Julia有全局变量作用域和局部变量作用域,函数或者一些结构体、循环体如for等是否内部是局部环境可以参照下表。

Construct Scope type Allowed within

module,baremodule global global

struct local (soft) global

for,while,try local (soft) global, local

macro local (hard) global

functions local (hard) global, local

doblocks,letblocks, comprehensions, generators local (hard) global, local

begin blocks, if blocks only global only global

soft意思是只要不重名就行,hard必须是一个独立的局部变量。

hard scope

第一种情况很符合直觉,函数运行后x还是123,函数内的x默认是局部变量

the hard scope rule isn't affected by anything in global scope

x=123

functiongreet()

x="hello"#newlocal

println(x)

end

greet()

x==123

第二种情况,使用global关键字声明x是全局变量,那么就修改了全局变量的x,因为全局变量中已经有了x,第二次赋值就覆盖了

x=123

functiongreet()

globalx="hello"#newlocal

println(x)

end

greet()

x=="hello"

soft scope

for循环是local (soft)类型,我们先定义一个全局变量s=0,然后在for循环中也有一个变量s,因为重名所以 新的赋值语句修改了全局变量s;但是全局变量中没有t所以新建了一个局部的t,并且外部是访问不到这个t的,因为t是局部变量。

这样写,全局的s和局部的s可能产生歧义,详细见官网,最好规避,或者写上 global。

s=0#global

fori=1:10

t=s+i#newlocal`t`

s=t#assignglobal`s`

end

s==55

t

#UndefVarError:tnotdefined

用global关键字,同样效果,但是思路更清晰

s=0#global

fori=1:10

t=s+i#newlocal`t`

globals=t#assignglobal`s`

end

s==55

Reference

https://docs.julialang.org/en/v1/manual/variables-and-scoping/

可嘉:j16608819485

相关文章

  • 2021-02-01

    auto 用在泛型编程中 *变量的作用域 local scope class scope:作用范围在类内部(...

  • 作用域/作用域链 闭包及其使用

    一、作用域、作用域链 作用域(scope) 浅显的理解: 作用域就是变量的可用范围(scope) 为什么要有作用域...

  • 浅谈JS作用域链

    浅谈JS作用域链 作用域 作用域(scope)就是变量访问规则的有效范围。作用域外,无法引用作用域内的变量;离开作...

  • 我理解的闭包

    一、 变量的作用域 一个变量的作用域(scope)是程序源代码中定义这个变量的区域。按变量作用域可以将变量分为全局...

  • javascript的函数作用域链

    变量作用域 一个变量的作用域(scope)是程序源代码中定义这个变量的区域。全局变量拥有全局作用域,在JavaSc...

  • JS中的作用域

    作用域 编程语言中作用于域的定义 Scope refers to the visibility of variab...

  • 7. 模块化的使用函数2 Modularity Using Fu

    7.1 变量的作用域(scope) 局部变量:local全局变量:global 变量和函数的scope都可以是全局...

  • 变量作用域

    TensorFlow中的两个作用域: variable_scope variable_scope变量作用机制在Te...

  • 作用域与作用域链

    作用域与作用域链 一、作用域 一个变量的作用域(scope)是程序源代码中定义的这个变量的区域。 在JS中使用的是...

  • JavaScript作用域和作用域链

    作用域(Scope) 1.什么是作用域 作用域就是变量与函数的可访问范围,换句话说,作用域决定了代码区块中变量和其...

网友评论

      本文标题:Julia编程11:变量作用域 Scope of Variabl

      本文链接:https://www.haomeiwen.com/subject/glaeqjtx.html