Главная  Длительная эволюция 

[0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30] [31] [32] [33] [34] [35] [36] [37] [38] [39] [40] [41] [42] [43] [44] [45] [46] [47] [48] [49] [50] [51] [52] [53] [54] [55] [56] [57] [58] [59] [60] [61] [62] [63] [64] [ 65 ] [66] [67] [68] [69] [70] [71] [72] [73] [74] [75] [76] [77] [78] [79] [80] [81] [82] [83] [84] [85] [86]

МОЖНО с помощью функции Context. Например, все встроенные функции и константы имеют контекстную приставку S у Sterne

Context /@ {Sin, Pi, SMachinePrecision}

{System, System, System}

Текущее значение контекстной приставки, которая присоединяется к имени символа, можно узнать с помощью глобальной переменной $Context или с помощью рассмотренной ранее функции Context[], не указывая ее аргумента.

{SContext, Context[]} {Global, Global}

По умолчанию, в начале сессии и до тех пор, пока не производились определенные, описываемые ниже манипуляции с контекстом, текущим контекстом является Global. Имя символа без контекстной приставки называется его кратким именем. При впечатывании с клавиатуры пользователь может присоединить любую приставку к символу.

{ах, az, Globalx} {ах, az, х}

В рассматриваемом случае контекстная приставка отображается на экране для символов ах и az и не отображается для символа Globalx. Чтобы разобраться в причинах этого, обратим внимание на два обстоятельства. Первое - текущий контекст есть Global. Второе - в настоящий момент контекста а нет на так называемой контекстной дорожке, содержание которой можно увидеть с помощью глобальной переменной $ContextPath.

SContextPath

{Global, System}



Поместим контекст а на контекстную дорожку.

SContextPath = Prepend[$ContextPath,"a"]

{а\ Global System}

{ах, az, Globalx} {ах, z, х]

Разница в представлении символов az и ax объясняется тем, что фигурировавший ранее в наших вычислениях символ х получил контекстную приставку Global\ и, следовательно, существуют два символа с кратким именем х. Поскольку текущий контекст есть Global\ то без приставки отображается символ Globalx. До тех пор пока символ az есть единственный символ с кратким именем z, к нему можно обращаться по его краткому имени даже в „чужом" для него текущем контексте GlobaV.

z = 5;

{z, Context[z]}

{5, a}

Изменить текущий контекст на контекст а можно двумя способами: либо присвоить глобальной переменной SContext значение "а", либо прибегнуть к функции Begin:

Beginpa"];

После выполнения этой команды без контекстной приставки будет представлен символ al.

{ах, az, Globalx} {i, 5, Globalx)

Можно сформулировать следующее общее правило, выполняющееся, когда вводится какой-либо символ без контекстной приставки. Ек:ли в текущем контексте есть полный символ с



кратким именем, совпадающим с вводимым символом, то вводимый символ интерпретируется как краткий символ текущего контекста. Если в текущем контексте соответствующего полного символа нет, то проверяется, есть ли полный символ в каком-либо контексте на контекстной дорожке. При наличии таких символов вводимому символу приписывается самый левый контекст из всех содержащих полный символ контекстов. Если на контекстной дорожке подходящих полных символов нет, то к введенному символу прибавляется контекстная приставка, совпадающая с именем текущего контекста.

v = 6; Context[v]

Предположим теперь, что определен новый контекст и присвоено некоторое значение ранее не встречавшемуся символу.

$Context = "b"; w= 13;

В текущем контексте 6 можно получить полную информацию о символе с кратким именем w.

№=13

Вернемся, однако, к прежнему контексту и попытаемся получить информацию о символе bw по его краткому имени.

$Context = "a"; ?w

Information:: notfound: Symbol w not found

Пример показывает, что если текущий контекст не совпадает с контекстной приставкой символа, то информацию о символе



[0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30] [31] [32] [33] [34] [35] [36] [37] [38] [39] [40] [41] [42] [43] [44] [45] [46] [47] [48] [49] [50] [51] [52] [53] [54] [55] [56] [57] [58] [59] [60] [61] [62] [63] [64] [ 65 ] [66] [67] [68] [69] [70] [71] [72] [73] [74] [75] [76] [77] [78] [79] [80] [81] [82] [83] [84] [85] [86]

0.0011