首页 > 编程中经常看到上下文,这个上下文指得是什么?

编程中经常看到上下文,这个上下文指得是什么?

如题主要不理解中文翻译的上下文的意思。比如oc中的autoreleasepool 就是自动释放上下文的意思。上下文指的是什么?谁能在举些例子讲一下


上下文: context

一样的操作(比如右键),在不同的位置有不同的操作。 右键菜单 => context menu => 上下文菜单

一样的关键词(比如break),在for当中出现和在switch当中出现就有不同的语义,因为上下文不同

一样的内存地址指针0xFFFF,不同的进程中访问到的实际物理内存地址完全不同,这是操作系统为进程提供的进程上下文


文章中的上下文

她是一个美女,他是一个屌丝。她是谁?他是谁?这得看上下文,比如:

程序中的上下文

context.draw() 会画到哪里?context是啥?这得看上下文,比如:

我们在写代码是遇到的context通常是由框架给出的,context通常会作为参数传进来,比图:

function onDraw(context) {
    context.draw();
}

也可能是调用一个框架提供的api得到的,比如:

var context = getCurrentContext();
context.draw();


我理解是跟北极熊不能生活在南极一个道理 函数和变量只能在指定的环境中运行,不能越俎代庖


上下文(context)就是运行的环境。
至于为什么会用到上下文而不是函数(function)我的理解是:
函数就像是一台机器,他有明确的运行和不运行两种状态,在它运行时你需要传给他确切的参数(参数个数,参数类型,参数值),这样他才能正常运行。
而上下文就像是一辆一直行驶的车。你想从A地给B地的朋友捎一件东西,你只需要在A地将东西放到车上,B地的朋友到时拿下来就行了。这辆车不需要知道你想稍什么东西,捎多少东西。(其实也是需要的,只不过没有函数那么严格)。


举个栗子:
小美气呼呼对我说:“你去死吧”,我当时哭了。

场景1:
小美刚转学到我们学校,我暗恋了她很久,有一天鼓足勇气,向她表白,小美气呼呼对我说:“你去死吧”,我当时就哭了。
场景2
我跟小美从小青梅竹马,后来我得了白血病,不忍心让小美跟着一起受苦,于是偷偷的一个人走掉,小美在一火车站找到了我,小美气呼呼对我说:“你去死吧”,我当时哭了。

这是上文,下文是:

场景1:
其实小美是同父异母的妹妹
场景2: 
其实根本没有小美,小美很久以前就死了,是我小学同学,我忘不掉她,产生了幻觉。
哦对了,我们家族有罕见的精神病史。
场景3:
小美其实是个男的,有性别认同障碍症。

可见,所谓上下文,就是当时运行的环境本身。


对于js来说,上下文好比是儿子和爸爸的关系,你们之间有一种父子关系,你知道自己的上下文是谁,像有些人一直都是被养父带大,却不知道自己亲生父亲是谁,而他却没有上下文,这是我的理解


上下文是指系统完成某个动作的过程中,需要提供给系统的关联信息。
举个例子说明:

然后上下文又分两种:

参考:Stackoverflow


就是上下文,联系你整个app的生命周期与资源调用。


上下文环境就相当于一个剧场舞台,不同的上下文对应了不同的观众或者评委(环境变量,参数等),一个程序,对象可以在不同的舞台上表演,初始化的时候你得告诉他他所处的环境是什么


翻译和国内语文教育的问题
“上下文”每个人在小学语文老师哪都听过,故名思意,就是文章中某一处的说法结合整片文章的内容的理解。
相同的话,在不同的上下文中理解是不同的。
在程序开发中,context更准确的翻译应该是“当前场景”,变量、对象都有作用域,上下文不仅指作用域,就算在相同作用域下也会因为当前执行程序的其它变量不同而有不同的表现。
另外,Web开发中有个context menu,也指的是当前文档下的菜单,比较context menu和navigate menu就能看出context的意思。navigate menu可以是任何东西,可以跳转到其它界面,可以打开新的窗口,可以是一些其它功能,而context menu仅针对你的当前页面下的一些操作,例如当前内容的复制、粘贴、剪切、打印、翻译

因此,程序开发中的context就是“当前场景”,context xxx,就是当前场景xxx,context对象,就是当前场景的对象(不是指作用域),例如创建一个httpClient,如果每次请求都与上一次请求获得的Response相关,那么这个httpClient是需要保持context状态的。


我觉得:

上下文,就是指在程序中的某个位置,可以访问到的所有资源的总和。

具体说来,在程序中资源可能是一个变量、一个常量、一个类的引用等等。


对于代码中某个值来说,上下文是指这个值所在的局部(全局)作用域对象。
相对于进程而言,上下文就是进程执行时的环境,具体来说就是各个变量和数据,包括所有的寄存器变量、进程打开的文件、内存(堆栈)信息等。

class Context(object):
    def __init__(self):
        self.test = 'test'
        
    def context(self):
    '''just a example'''
        pass

test = Context()

比如,这里Context的实例test的上下文就是全局作用域对象,而Context类内部的test变量的上下文只是Context这个类或者它的实例而已。

【热门文章】
【热门文章】