Главная Длительная эволюция [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.001 |