Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >为什么dolphindb脚本中的函数不能访问外部作用域中的变量

为什么dolphindb脚本中的函数不能访问外部作用域中的变量
EN

Stack Overflow用户
提问于 2019-06-23 14:28:48
回答 1查看 21关注 0票数 1

在我使用过的大多数编程语言中,比如C/C++、python,函数都可以访问外部作用域中的变量,但正如我在DolphinDB script中尝试的那样,情况并不相同。

以下代码不起作用,并报告错误消息:Variable 'foo' isn't initialized yet.

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
foo = 1
def func() {
    foo = foo + 1
}
func()

我想知道为什么它是这样设计的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-24 02:55:38

DolphinDB支持函数式编程,包括纯函数特性。纯函数没有副作用,即只有函数的输入参数可以影响函数的输出。

纯函数具有清晰的输入/输出,提高了软件质量。纯函数使代码具有可读性。给定输入参数,纯函数具有稳定的输出,这使得测试变得更容易。DolphinDB是一个建立在远程过程调用之上的分布式系统。如果一个函数依赖于外部作用域中的变量,那么它不能在远程节点中执行。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56724849

复制
相关文章
【Python】循环语句 ⑥ ( 变量作用域 | for 循环临时变量访问 | 分析在 for 循环外部访问临时变量的问题 | 在 for 循环外部访问临时变量的正确方式 )
如果需要在外部访问 for 循环的临时变量 , 建议将该 临时变量 预定义在 for 循环的外部 , 然后在后续的所有代码中可以访问该 临时变量 ;
韩曙亮
2023/10/11
7600
【Python】循环语句 ⑥ ( 变量作用域 | for 循环临时变量访问 | 分析在 for 循环外部访问临时变量的问题 | 在 for 循环外部访问临时变量的正确方式 )
关于JS中的作用域中的沉思
scope和closure是javascript中两个非常关键的概念,前者JS用多了还比较好理解而且容易体会到,而closure就不一样了。这玩意是真的很容易迷糊
Yerik
2021/08/07
8840
【说站】java中lambda访问外部变量
java中lambda访问外部变量 1、可以在Lambda表达式中访问外部final类型的变量。 // 转换器 @FunctionalInterface interface Converter<F, T> {     T convert(F from); } 2、不同于匿名内部类,不必显式地将num变量声明为final类型。 int num = 1; Converter<Integer, String> stringConverter =         (from) -> String.value
很酷的站长
2022/11/23
1.3K0
【说站】java中lambda访问外部变量
用Shell脚本过滤Hadoop中不能访问的节点
最近使用的一个集群hp1,因为维护集群的人不给力,节点总是过一段时间就掉一两个。今天发现重启Hadoop时,HDFS已经进入保护模式了。
星哥玩云
2022/07/03
8750
c语言局部变量、全局变量、静态变量、内部函数、外部函数、声明、定义、extern作用总结
  前两种方式定义的变量可以在函数内任何地方使用,而第三种方式定义的变量只能在复合语句内使用。
vv彭
2020/10/27
10K0
c语言局部变量、全局变量、静态变量、内部函数、外部函数、声明、定义、extern作用总结
从外部访问Kubernetes中的Pod
本文主要讲解访问kubernetes中的Pod和Serivce的几种方式,包括如下几种:
我的小碗汤
2019/07/30
3K0
idea中JSP页面不能访问静态资源(图片,js,css) <mvc:default-servlet-handler/>的作用
必须配置SpringMvc对访问静态资源的支持,idea默认就是在main/webapp 下的文件路径,要在web-info同级的resource文件下放置,JSP中
_DIY
2020/06/18
5.1K0
idea中JSP页面不能访问静态资源(图片,js,css)
    




            <mvc:default-servlet-handler/>的作用
Java 中变量的作用域
变量的作用域是一个程序的重要组成部分。因为它决定了某个时候每个地方某个变量是否可访问。与 C/C++ 一样。静态语言的作用域在编译期就是确定的。而且独立于函数调用堆栈。
技术从心
2019/08/06
1.9K0
Java 中变量的作用域
Python 中的变量作用域
通常,在块中定义的变量仅在该块中可用。在街区外无法到达。这样的变量称为局部变量。形式参数标识符也表现为局部变量。
很酷的站长
2023/08/15
1760
Python 中的变量作用域
Python中变量的作用域
我们在写代码过程中会用到很多变量,这些变量会出现在各种代码块中,有的出现在函数块里,有的在函数块外,例如:
py3study
2020/01/19
1.1K0
Javascript作用域问题的构造函数的变量
构造函数new对于使用。代表创建对象。此外,它可以被用作普通的函数调用,因为它也是一个功能。
全栈程序员站长
2022/07/06
9630
dlopen静态库_opensubwnd脚本函数的作用
1、dlopen 动态库失败原因,我碰到主要是以下几点(碰到新问题之后再完善,先打个点) ①动态库位置没有放对地方,dlopen 时候找不到你想操作的动态库 解决办法:放到指定目录。 ②头文件没有包全,有不能识别的函数或者标识符 解决办法:加一条打印信息,程序运行到这里,会输出不能识别标识符。
全栈程序员站长
2022/11/19
8890
为什么Java中类的成员变量不能被重写?成员变量在Java中能够被重写么?不会重写成员变量,而是隐藏成员变量访问隐藏域的方法
这篇文章讨论了Java面向对象概念中一个基本的概念--Field Hiding(成员变量隐藏)
desperate633
2018/08/22
3.5K0
为什么Java中类的成员变量不能被重写?成员变量在Java中能够被重写么?不会重写成员变量,而是隐藏成员变量访问隐藏域的方法
VBA: 变量、过程或函数的作用域
文章背景: VBA中,变量的作用域,决定变量在哪里能被获取和使用。VBA中的过程和函数,与变量类似,也具有不同的作用域。
Exploring
2022/09/20
1.3K0
为什么在线性模型中相互作用的变量要相乘
在这篇文章中,我将解释为什么当建立一个线性模型,我们添加一个x₁₂术语如果我们认为变量x₁和x₂互动和添加交互条款订立原则方法。
deephub
2020/07/02
8630
20.4 shell脚本中的变量
shell脚本中的变量 当脚本中使用某个字符串较频繁并且字符串长度很长时就应该使用变量代替 使用条件语句时,常使用变量 if [ $a -gt 1 ]; then ... ; fi 引用某个命令的结果时,用变量替代 n=wc -l 1.txt 写和用户交互的脚本时,变量也是必不可少的 read -p "Input a number: " n; echo 内置变量 0, 1, 2… 0表示脚本本身,1 第一个参数,2 第二个 .... 数学运算a=1;b=2; c=((a+b))或者[a+b]
运维小白
2022/01/06
3.1K0
虚拟变量在模型中的作用
实际场景中,有很多现象不能单纯的进行定量描述,只能用例如“出现”“不出现”这样的形式进行描述,这种情况下就需要引入虚拟变量。例如即将到来的女生节,每年的这个时候毛绒玩具的销量都会上升,说明女生节对毛绒玩具的销量产生了一定影响,但是这个影响程度又很难界定,这时只能定义一个虚拟变量去描述事情“发生”与“不发生”了。
许卉
2019/07/15
4.3K0
makefile中的include的作用(makefile中的变量)
例子: 建立一个测试目录,在测试目录下建立一个名为sub的子目录 $ mkdir test $ cd test $ mkdir sub 在test下,建立a.c和b.c2个文件,在sub目录下,建立sa.c和sb.c2 个文件 建立一个简单的Makefile src=$(wildcard *.c ./sub/*.c) dir=$(notdir $(src)) obj=$(patsubst %.c,%.o,$(dir) ) all: @echo $(src) @echo $(dir) @echo $(obj) @echo “end” 执行结果分析: 第一行输出: a.c b.c ./sub/sa.c ./sub/sb.c wildcard把 指定目录 ./ 和 ./sub/ 下的所有后缀是c的文件全部展开。 第二行输出: a.c b.c sa.c sb.c notdir把展开的文件去除掉路径信息 第三行输出: a.o b.o sa.o sb.o 在$(patsubst %.c,%.o,$(dir) )中,patsubst把$(dir)中的变量符合后缀是.c的全部替换成.o, 任何输出。 或者可以使用 obj=$(dir:%.c=%.o) 效果也是一样的。 这里用到makefile里的替换引用规则,即用您指定的变量替换另一个变量。 它的标准格式是 $(var:a=b) 或 ${var:a=b} 它的含义是把变量var中的每一个值结尾用b替换掉a 今天在研究makefile时在网上看到一篇文章,介绍了使用函数wildcard得到指定目录下所有的C语言源程序文件名的方法,这下好了,不用手工一个一个指定需要编译的.c文件了,方法如下: SRC = $(wildcard *.c) 等于指定编译当前目录下所有.c文件,如果还有子目录,比如子目录为inc,则再增加一个wildcard函数,象这样: SRC = $(wildcard *.c) $(wildcard inc/*.c) 也可以指定汇编源程序: ASRC = $(wildcard *.S) 这样一来,makefile模板可修改的基本就是AVR名称和时钟频率了,其它的一般不用动了。
全栈程序员站长
2022/08/02
3.3K0
CentOS7上解决tomcat不能被外部浏览访问的问题?
在linux上开启的tomcat使用浏览器访问不了。 主要原因在于防火墙的存在,导致的端口无法访问。
周小董
2019/03/25
2.1K0
点击加载更多

相似问题

访问外部作用域中的变量?

50

外部作用域中的访问变量

111

为什么python中的内部函数不能获得外部作用域中的变量

11

从外部定义的函数访问作用域中的变量

20

Javascript -在函数的外部作用域中访问变量的开销有多大?

22
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文