我想在Perl中做,相当于以下Ruby代码:
class Foo
MY_CONST = {
'foo' => 'bar',
'baz' => {
'innerbar' => 'bleh'
},
}
def some_method
a = MY_CONST[ 'foo' ]
end
end
# In some other file which uses Foo...
b = Foo::MY_CONST[ 'baz' ][ 'innerbar' ]
Run Code Online (Sandbox Code Playgroud)
也就是说,我只想声明一个常量的嵌套哈希结构,以便在类和外部使用.如何?
在 Ruby 世界中,使用 rspec,我们有一个可用的功能,称为let( https://relishapp.com/rspec/rspec-core/docs/helper-methods/let-and-let )。它的主要好处是它是惰性求值的,所以我们可以像这样编写测试:
describe Thing do
describe "#process" do
let(:arg) { nil }
let(:result) { Thing.new.process(arg) }
context "given 3" do
let(:arg) { 3 }
it "returns 12" do
expect(result).to eq 12
end
end
context "given 7" do
let(:arg) { 7 }
it "returns 42" do
expect(result).to eq 42
end
end
end
end
Run Code Online (Sandbox Code Playgroud)
关键是我们不必有一条线来计算result每个it块的内部。
我的问题是:在 Javascript 世界中,是否有提供等效功能的库或框架?
我习惯用 Jasmine 写作,但我不喜欢它,如果它有我正在寻找的这种懒惰的评估功能,我可以使用 Mocha 或其他东西。
我怀疑有一种方法可以使用beforeEach和function () {...}声明之类的冗长卷积来做到这一点,但理想情况下提出的解决方案应该有一个漂亮、简洁和优雅的语法。
我知道 …
好吧,我正在尝试为回形针生成rDoc,但是rake任务在它到达之前会阻塞另一个插件,所以这是不可能的:
rake doc:plugins
Run Code Online (Sandbox Code Playgroud)
我可以去修复破碎的插件,但我很忙,很懒,所以我只想生成回形针的文档.有没有办法做到这一点?
我正在编写一个使用F1键的控制台应用程序(求助).不幸的是,虽然Konsole(KDE)不使用此密钥,Gnome终端会这样做,因此我的应用程序无法访问F1密钥.我不认为有一种方法可以检测F1键是否已经在事物的GUI端映射(Gnome Terminal),但是如果有,那么答案将消除这个问题.:)
因此,我的下一个最好的选择是尝试检测我是否在Gnome终端内运行.有办法做到这一点吗?我主要感兴趣的是从Ruby中收集它,但如果可以通过shell或环境变量或虚拟文件系统(/ proc,/ dev等)来完成,那么这就足够了.
我希望有一个可靠的方法来做到这一点,但我可以满足于"最好的猜测"方法,比如贪图环境变量以寻找可以让我合理地假设Gnome Terminal是包装终端的线索.
额外信息:其他钥匙也被Gnome Terminal"偷走".我打算为Gnome用户显示一些关于替代密钥的信息性消息.
很抱歉,如果我的谷歌功能太弱,但是:我只是想调整zsh以便我可以完成选项卡
someappname -s
Run Code Online (Sandbox Code Playgroud)
使用〜/ somedir的内容(文件名)
例如:
someapp -s f<tab>
Run Code Online (Sandbox Code Playgroud)
应该根据以〜/ somedir中的字母f开头的文件循环完成完成.所以我最终可能会得到一个命令行:"someapp -s foobar".
我已经找到了如何缩放缩略图以保持在指定的边界尺寸内,同时保持纵横比。例如,要将第 6 秒显示的帧放入 input.mp4 视频文件中,并将其缩放以适合 96x60(16:10 宽高比):
ffmpeg -y -i input.mp4 -ss 6 -vframes 1 -vf scale="'if(gt(a,16/10),96,-1)':'if(gt(a,16/10),-1,60)'" output.png
这很好,它有效。
接下来,我想做同样的事情,但如果视频的长宽比不完全是 16:10,那么我想通过执行上述转换,并填充或填充来强制输出图像的长宽比为 16:10用白色填充空间。也就是说,我希望输出就像我拍摄了一张 96x48 图像,并将其放置在 96x60 白色背景上,从而在 96x48 图像上方和下方出现白色条。
理想情况下,我不想诉诸使用其他工具或库,例如 ImageMagick。如果 ffmpeg 能自己做到这一点那就最好了。