Pry 中的 ls 命令如何接受 -l 作为参数?
How is the ls command in Pry able to accept -l as an argument?
我最近发现 ls
in pry 可以采用这样的参数:ls -l
。
我最初的问题是 -l
部分实际上是什么 - 它显然不是字符串或符号,并且没有定义局部变量或方法 l
,所以还有其他事情要做在幕后?
作为我的问题的扩展,ls
只是 pry 定义的 "normal" Ruby 方法,还是它的行为略有不同?
我还注意到,如果传递字符串 (ls 'l'
) 或符号 (ls :l
),则会得到不同的输出。是否有可能选项的完整参考?
传递 -l
有效,因为 pry_eval
方法将整行计算为字符串。从那里它匹配现有命令的开头并将其余部分提取为要传递的选项。来自 Pry 文档:
Nearly every piece of functionality in a Pry session is implemented as
a command. Commands are not methods and must start at the beginning of
a line, with no whitespace in between. Commands support a flexible
syntax and allow 'options' in the same way as shell commands
您可以通过 运行 ls -h
查看完整的选项列表。这将 return:
-m, --methods Show public methods defined on the Object (default)
-M, --instance-methods Show methods defined in a Module or Class
-p, --ppp Show public, protected (in yellow) and private (in green) methods
-q, --quiet Show only methods defined on object.singleton_class and object.class
-v, --verbose Show methods and constants on all super-classes (ignores Pry.config.ls.ceiling)
-g, --globals Show global variables, including those builtin to Ruby (in cyan)
-l, --locals Show locals, including those provided by Pry (in red)
-c, --constants Show constants, highlighting classes (in blue), and exceptions (in purple)
-i, --ivars Show instance variables (in blue) and class variables (in bright blue)
-G, --grep Filter output by regular expression
-h, --help Show this message.
我最近发现 ls
in pry 可以采用这样的参数:ls -l
。
我最初的问题是 -l
部分实际上是什么 - 它显然不是字符串或符号,并且没有定义局部变量或方法 l
,所以还有其他事情要做在幕后?
作为我的问题的扩展,ls
只是 pry 定义的 "normal" Ruby 方法,还是它的行为略有不同?
我还注意到,如果传递字符串 (ls 'l'
) 或符号 (ls :l
),则会得到不同的输出。是否有可能选项的完整参考?
传递 -l
有效,因为 pry_eval
方法将整行计算为字符串。从那里它匹配现有命令的开头并将其余部分提取为要传递的选项。来自 Pry 文档:
Nearly every piece of functionality in a Pry session is implemented as a command. Commands are not methods and must start at the beginning of a line, with no whitespace in between. Commands support a flexible syntax and allow 'options' in the same way as shell commands
您可以通过 运行 ls -h
查看完整的选项列表。这将 return:
-m, --methods Show public methods defined on the Object (default)
-M, --instance-methods Show methods defined in a Module or Class
-p, --ppp Show public, protected (in yellow) and private (in green) methods
-q, --quiet Show only methods defined on object.singleton_class and object.class
-v, --verbose Show methods and constants on all super-classes (ignores Pry.config.ls.ceiling)
-g, --globals Show global variables, including those builtin to Ruby (in cyan)
-l, --locals Show locals, including those provided by Pry (in red)
-c, --constants Show constants, highlighting classes (in blue), and exceptions (in purple)
-i, --ivars Show instance variables (in blue) and class variables (in bright blue)
-G, --grep Filter output by regular expression
-h, --help Show this message.