Mathematica: неоцененный по сравнению с Задерживают по сравнению с Хранением по сравнению с HoldForm по сравнению с HoldAllComplete по сравнению с и т.д. и т.д.

Это может означать это.

class MyCharacter( object ):
    def __init__( self, aString ):
        self.value= ord(aString[0])
    def __add__( self, other ):
        return MyCharacter( chr(self.value + other) )
    def __str__( self ):
        return chr( self.value )

Он работает следующим образом.

>>> c= MyCharacter( "ABC" )
>>> str(c+2)
'C'
>>> str(c+3)
'D'
>>> c= c+1
>>> str(c)
'B'
28
задан RBarryYoung 25 October 2009 в 03:31
поделиться

1 ответ

Это довольно сложные конструкции, и трудно дать четкие объяснения; они не так просты, как макросы Lisp (или, между прочим, отношения между Lisp QUOTE и EVAL). Тем не менее, на веб-сайте Вольфрама есть хорошее и продолжительное обсуждение в виде заметок из выступления Робби Виллегаса "Неоцененные выражения" в 1999 году.

Defer опущено в этом выступлении, потому что оно новое с Mathematica 6.0. Это очень похоже на HoldForm, за исключением того, что когда он выводится во внешнем интерфейсе (но не в чистом ядре), он удаляется, оставляя выражение, которое можно использовать в качестве ввода. Это очень полезно, если вы хотите программно создавать выражения, которые пользователь может редактировать и оценивать, скажем, в палитре.

11
ответ дан Reb.Cabin 14 October 2019 в 12:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: