Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reflection mathematica中的命令完成:建议规则/选项_Reflection_Wolfram Mathematica_Keyboard Shortcuts - Fatal编程技术网

Reflection mathematica中的命令完成:建议规则/选项

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

在当前版本的Mathematica中,这些键盘快捷键非常方便

Ctrl+K完成当前命令

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
加快输入,允许通过Esc
txt
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我认为没有办法检索选项值。如果您考虑如何为自己的函数实现选项,就会明白为什么会这样。不幸的是,值甚至没有文档记录(think
Method
…)这只提供了默认选项,这没有多大意义。据我所知,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]