编程中经常看到上下文,这个上下文指得是什么?
如题主要不理解中文翻译的上下文的意思。比如oc中的autoreleasepool 就是自动释放上下文的意思。上下文指的是什么?谁能在举些例子讲一下
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
如题主要不理解中文翻译的上下文的意思。比如oc中的autoreleasepool 就是自动释放上下文的意思。上下文指的是什么?谁能在举些例子讲一下
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(13)
我觉得context可以理解为这样:程序在任意一个时刻都有自己的状态,状态在代码中体现为为存储器的一些数值,在高级层面可以理解为context的一些属性。context记录了此时状态下的所有环境信息,作用主要是1.切换状态的时候,便于将来对原先状态的重置。2切换到新的状态的时候,可以从context中获取有效的信息。可以类比UIView的Draw的流程。
OC中的autoreleasepool自动释放上下文则是在当前的runLoop这个周期内,context中所有被标记为自动释放的对象,则会在这个周期结束的时候释放。
举个栗子:
小美气呼呼对我说:“你去死吧”,我当时哭了。
场景1:
小美刚转学到我们学校,我暗恋了她很久,有一天鼓足勇气,向她表白,小美气呼呼对我说:“你去死吧”,我当时就哭了。
场景2
我跟小美从小青梅竹马,后来我得了白血病,不忍心让小美跟着一起受苦,于是偷偷的一个人走掉,小美在一火车站找到了我,小美气呼呼对我说:“你去死吧”,我当时哭了。
这是上文,下文是:
场景1:
其实小美是同父异母的妹妹
场景2:
其实根本没有小美,小美很久以前就死了,是我小学同学,我忘不掉她,产生了幻觉。
哦对了,我们家族有罕见的精神病史。
场景3:
小美其实是个男的,有性别认同障碍症。
可见,所谓上下文,就是当时运行的环境本身。
对于代码中某个值来说,上下文是指这个值所在的局部(全局)作用域对象。
相对于进程而言,上下文就是进程执行时的环境,具体来说就是各个变量和数据,包括所有的寄存器变量、进程打开的文件、内存(堆栈)信息等。
比如,这里Context的实例test的上下文就是全局作用域对象,而Context类内部的test变量的上下文只是Context这个类或者它的实例而已。
上下文(context)就是运行的环境。
至于为什么会用到上下文而不是函数(function)我的理解是:
函数就像是一台机器,他有明确的运行和不运行两种状态,在它运行时你需要传给他确切的参数(参数个数,参数类型,参数值),这样他才能正常运行。
而上下文就像是一辆一直行驶的车。你想从A地给B地的朋友捎一件东西,你只需要在A地将东西放到车上,B地的朋友到时拿下来就行了。这辆车不需要知道你想稍什么东西,捎多少东西。(其实也是需要的,只不过没有函数那么严格)。
上下文: context
一样的操作(比如右键),在不同的位置有不同的操作。 右键菜单 => context menu => 上下文菜单
一样的关键词(比如break),在for当中出现和在switch当中出现就有不同的语义,因为上下文不同
一样的内存地址指针0xFFFF,不同的进程中访问到的实际物理内存地址完全不同,这是操作系统为进程提供的进程上下文
翻译和国内语文教育的问题
“上下文”每个人在小学语文老师哪都听过,故名思意,就是文章中某一处的说法结合整片文章的内容的理解。
相同的话,在不同的上下文中理解是不同的。
在程序开发中,context更准确的翻译应该是“当前场景”,变量、对象都有作用域,上下文不仅指作用域,就算在相同作用域下也会因为当前执行程序的其它变量不同而有不同的表现。
另外,Web开发中有个context menu,也指的是当前文档下的菜单,比较context menu和navigate menu就能看出context的意思。navigate menu可以是任何东西,可以跳转到其它界面,可以打开新的窗口,可以是一些其它功能,而context menu仅针对你的当前页面下的一些操作,例如当前内容的复制、粘贴、剪切、打印、翻译
因此,程序开发中的context就是“当前场景”,context xxx,就是当前场景xxx,context对象,就是当前场景的对象(不是指作用域),例如创建一个httpClient,如果每次请求都与上一次请求获得的Response相关,那么这个httpClient是需要保持context状态的。
就是上下文,联系你整个app的生命周期与资源调用。
对于js来说,上下文好比是儿子和爸爸的关系,你们之间有一种父子关系,你知道自己的上下文是谁,像有些人一直都是被养父带大,却不知道自己亲生父亲是谁,而他却没有上下文,这是我的理解
我理解是跟北极熊不能生活在南极一个道理 函数和变量只能在指定的环境中运行,不能越俎代庖
我觉得:
具体说来,在程序中资源可能是一个变量、一个常量、一个类的引用等等。
文章中的上下文
她是一个美女,他是一个屌丝。她是谁?他是谁?这得看上下文,比如:
她叫柳岩他叫大鹏。她是一个美女,他是一个屌丝。
她叫小花他叫小明。她是一个美女,他是一个屌丝。
程序中的上下文
context.draw()
会画到哪里?context
是啥?这得看上下文,比如:画到内存里
画到屏幕上
我们在写代码是遇到的
context
通常是由框架给出的,context
通常会作为参数传进来,比图:也可能是调用一个框架提供的api得到的,比如:
上下文环境就相当于一个剧场舞台,不同的上下文对应了不同的观众或者评委(环境变量,参数等),一个程序,对象可以在不同的舞台上表演,初始化的时候你得告诉他他所处的环境是什么
上下文是指系统完成某个动作的过程中,需要提供给系统的关联信息。
举个例子说明:
比如你入职的时候,公司需要你的姓名、专业等个人信息。那么个人信息就是对于入职这个动作而言的上下文。
入职后会拥有自己的工号,每天上下班要凭工号打卡。那么对于打卡这个动作而言,工号就是所需的上下文。
然后上下文又分两种:
一种是必须的(required context),还是刚刚那个例子,如果不提供个人信息,公司就不会让你入职,则个人信息是必须的上下文。
一种是可选的(optional context),假设入职的时候,你可以自由选择想去的部门,部门就是可选的上下文。
参考:Stackoverflow