Reflection mathematica中的命令完成:建议规则/选项
在当前版本的Mathematica中,这些键盘快捷键非常方便 Ctrl+K完成当前命令Reflection mathematica中的命令完成:建议规则/选项,reflection,wolfram-mathematica,keyboard-shortcuts,Reflection,Wolfram Mathematica,Keyboard Shortcuts,在当前版本的Mathematica中,这些键盘快捷键非常方便 Ctrl+K完成当前命令 GraphPl -> press Ctrl+K -> GraphPlot Ctrl+Shift+K完成当前命令并添加参数占位符,这些占位符可以使用tab键替换为实际值 但是,我找不到任何键盘选项来显示关联的设置/选项 例如,如果我需要用不同的布局绘制一个图,我知道我需要用这些可能的设置之一设置方法 “圆形床上用品” “随机嵌入” “高维嵌入” “放射状绘图” “SpringEmbedding
GraphPl -> press Ctrl+K -> GraphPlot
Ctrl+Shift+K完成当前命令并添加参数占位符,这些占位符可以使用tab键替换为实际值
但是,我找不到任何键盘选项来显示关联的设置/选项
例如,如果我需要用不同的布局绘制一个图,我知道我需要用这些可能的设置之一设置方法
- “圆形床上用品”
- “随机嵌入”
- “高维嵌入”
- “放射状绘图”
- “SpringEmbedding”
- “SpringElectricalEmbedding”
GraphPlot[sg, Method -> <what keyboard shortcut to display all possible options>]
有没有类似于在其他编程语言中使用反射(如在Java中使用反射)的方式来内省Mathematica函数和访问方法元数据的方法?我认为没有任何包含的函数可以自动完成字符串。除了搜索帮助文件外,我还想不起查看特定选项的所有有效设置的方法 您可以使用选项检查器设置
InputAliases
和inpututoreplacements
加快输入,允许通过Esctxt
Esc或txt
空格进行输入。草稿:正在进行中的工作
这是到目前为止我能达到的最接近的,尽管它需要大量的增强,因为它希望从社区获得一些想法。如果有人能进一步改进它,或提出任何想法,我们将不胜感激
ruleOfRule[list_] := Map[Rule[#, #] &, list];
Manipulate[
GraphPlot @@ {{"A" -> "B", "B" -> "C", "C" -> "A"},
options}, {{options, {}}, ruleOfRule[Options[GraphPlot]]},
ControlType -> CheckboxBar]
MathGroup的Thomas Munsch发布了调色板
ClickableOptions
的代码,您可能会发现这些代码很有用:[您可能会发现Options
函数很有用,但它只提供带有默认值的选项名称。我知道它比您要求的要窄得多,而且不是键盘快捷键。只是为了防止您发现它有用,才提一下它。@Szabolcs我确实尝试过Options
,正如您正确指出的,它只提供了默认操作选项,而不是设置的所有可能选项:(我将添加我可以这样做的内容far@Prashant我认为没有办法检索选项值。如果您考虑如何为自己的函数实现选项,就会明白为什么会这样。不幸的是,值甚至没有文档记录(thinkMethod
…)这只提供了默认选项,这没有多大意义。据我所知,Mathematica没有提供一个标准机制来检索所有可能的选项值,因此我认为这项工作不会给您带来任何好处。唉。@Sjoerd也许这就是这个社区的作用所在?我们不能一起工作来详细说明如果mathematica.SE网站成为现实,我希望有一个“合作项目”@Mr.Wizard我觉得这是一项WRi比社区更适合的任务。我想他们已经有了一个选项数据库。我完全支持合作项目,但这似乎是浪费了大量精力来实现WRi可以轻松完成的任务。不仅没有自动完成fun选项,但没有对基于字符串的选项(选项名称或值)执行任何拼写检查也有。这是一个相当恼人的情况。@Sjoerd尽管拼写不好,但我发现旧的General:spell1
非常恼人,虽然我能看出这是一个不错的选项,但我不知道我会打开它。我说的是在命令输入期间进行拼写检查,作为语法着色的一部分。如果我写错了选项名称,颜色会变为忽略这一点。对于字符串形式的选项名称则不是这样。@Sjoerd可能是因为它会减慢速度?目前的情况是,一旦代码变长,语法样式会大大降低前端键入的速度。@MikeHoneychurch我的假设是,使用字符串形式的名称而不是符号形式的名称来减少名称空间占用(我没有放慢速度)。但我真的很讨厌它,特别是因为有些名称同时以字符串和符号的形式出现(方法就是一个例子)。它打破了我对选项规则的想象。名称->值对我来说是“变量取值”,但“名称”->“值”感觉不对,就像“值取值”或者1=2。我知道在模式匹配/替换术语中这是可以的,但当我在选项语句中读到它时,我感到我的大脑在咬牙切齿。
list={
"CircularEmbedding"
, "RandomEmbedding"
, "HighDimensionalEmbedding"
, "RadialDrawing"
, "SpringEmbedding"
, "SpringElectricalEmbedding"
}
Manipulate[GraphPlot[sg, Method -> m], {m, list}, ControlType -> PopupMenu]
ruleOfRule[list_] := Map[Rule[#, #] &, list];
Manipulate[
GraphPlot @@ {{"A" -> "B", "B" -> "C", "C" -> "A"},
options}, {{options, {}}, ruleOfRule[Options[GraphPlot]]},
ControlType -> CheckboxBar]