我查看了文档,甚至偷看了C源代码,我不明白为什么他们将接受的基数限制在2..36.有人知道吗?
考虑以下情况,StubFoo是Foo的存根,我希望将其用于某些测试.
class Runner
def run
Foo = StubFoo
foo = Foo.new
# using Foo...
end
end
Run Code Online (Sandbox Code Playgroud)
这会生成以下错误消息: Dynamic constant assignment
然而,在RSpec我可以做以下工作,这是有效的,并且完全合法:
it "should be an example" do
Foo = StubFoo
foo = Foo.new
foo.to_s.should == "I am stubbed!"
end
Run Code Online (Sandbox Code Playgroud)
关于这一点的一些问题.
我在使用模拟框架之前做这个,纯粹想知道如何在Ruby中进行模拟,存根等等.我听说动态语言更容易模拟/存根,并且互联网上有指南,其中简单的类重新分配如上所述.根据我的研究,在Ruby中,不可能在方法中声明常量,但我如上所述会感到困惑.
编辑
对,这开始变得更有意义了.我已经更新了run,现在正在使用const_set.
def run
old = Foo
self.class.const_set(:Foo, StubFoo)
foo = Foo.new
puts foo.to_s
self.class.const_set(:Foo, old)
foo = Foo.new
puts foo.to_s
end
Run Code Online (Sandbox Code Playgroud)
这会产生一个警告,然而,这是什么/如何模拟框架在Ruby中工作?显然更优雅,功能齐全,但他们只是压制这个警告?
并非Vim中的每个命令都允许您添加行尾注释.有时"它作为一个参数是有效的,所以它是模棱两可的.但是,如果插入管道,命令将结束,您可以插入注释.因此,您实际上可以在vim中实现可靠的行尾注释:
noremap ' ` |" Use single quote as alternate range key
Run Code Online (Sandbox Code Playgroud)
干净吧?但该syntax/vim.vim文件并未将此视为行尾注释.我如何告诉Vim识别这种语法?
我发现这个syntax/vim.vim:
syn match vimLineComment +^[ \t:]*".*$+ contains=@vimCommentGroup,vimCommentString,vimCommentTitle
Run Code Online (Sandbox Code Playgroud)
我尝试将这样的东西加到我身上~/.vimrc,但没有效果.VimScript很难.:/
syntax match vimLineComment '|".*$+'
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?