以更多功能方式执行以下操作的最佳方法是什么(使用ES6/ES7)
let cols = [];
for (let i =0; i <= 7; i++) {
cols.push(i * i);
}
return cols;
Run Code Online (Sandbox Code Playgroud)
我试过,
return [ ...7 ].map(i => {
return i * i;
});
Run Code Online (Sandbox Code Playgroud)
但那转化为
[].concat(7).map(function (n) {
return n * n;
});
Run Code Online (Sandbox Code Playgroud)
这不是我的预期.
@pavlo.的确,这是一个错误.我正在使用JSX,例如,我想要7个div,(未经测试)
let cols = [];
for (let i =0; i <= 7; i++) {
cols.push(<div id={i}> ... </div>)
}
return cols;
Run Code Online (Sandbox Code Playgroud)
所以这个想法确实是为了减少临时变量和程序感觉的数量.
javascript functional-programming ecmascript-harmony ecmascript-6
假设在所有测试中执行setup
或者teardown
相同的操作可能是昂贵的操作,并且在测试运行期间其结果不会被弄乱.在每次测试之前/之后让它们运行似乎是不对的.
那么有没有一种首选的方法只在第一次测试执行之前运行设置/拆卸代码,并且只在最后一次测试运行之后?
编辑:我正在处理的特定情况应该测试Net :: FTP的一些扩展,从而建立一个FTP连接并设置一些远程对象进行测试:
class TestFTPExtensions < Test::Unit::TestCase
def setup
# Setup connection
@ftp = Net::FTP.new 'localhost', 'anonymous'
@ftp.passive = true
# Create remote test directory
@ftp.mkdir 'dir'
# Create remote test file
path = File.join Dir.tmpdir, 'file'
File.open path, 'w' do |f|
@ftp.put f
end
File.delete path
end
def teardown
@ftp.rmdir 'dir'
@ftp.delete 'file'
@ftp.close
end
# imagine some tests here that don't change/remove any remote objects
end
Run Code Online (Sandbox Code Playgroud) 鉴于一些库,实现了一些广泛的协议或类似的(例如FTP)的东西,我怎么会保持我的标准兼容的代码单独从只需要能够与不那么符合标准的系统进行合作的代码?
一个很好的例子,这也是有意义的恕我直言,像jQuery这样的库必须考虑所有这些浏览器的特性.必须保持传统兼容性的项目可能也是这些技术的良好目标受众.
我对ruby解决方案特别感兴趣,但也欢迎语言无关的模式或来自其他语言的好例子.
我已经在stackoverflow上找到了一个相关的问题,但还有其他方法吗?
我正在尝试使用Javascript在Illustrator中保存文件,但我一直收到错误.
这是有效的,但不是我想要的:
// save as
var dest = "~/testme.pdf";
saveFileToPDF(dest);
function saveFileToPDF (dest) {
var doc = app.activeDocument;
if ( app.documents.length > 0 ) {
var saveName = new File ( dest );
saveOpts = new PDFSaveOptions();
saveOpts.compatibility = PDFCompatibility.ACROBAT5;
saveOpts.generateThumbnails = true;
saveOpts.preserveEditability = true;
alert(saveName);
doc.saveAs( saveName, saveOpts );
}
}
Run Code Online (Sandbox Code Playgroud)
var"dest"将文件保存到我的Mac用户帐户的根目录.我只是想在子文件夹中保存相对于源文档的文件,所以我尝试了这个:
var dest = "exports/testme.pdf";
Run Code Online (Sandbox Code Playgroud)
这会突出显示".pdf"对话框,正确等待我已创建的"exports"文件夹中的输入.我可以键入一些内容并保存,但它会忽略代码中指定的文件名"testme.pdf".我可以在它知道我想要的突出显示的".pdf"上键入"cheese",它会将"cheese.pdf"保存在"exports"文件夹中.
我也试过这些没有运气:
var dest = "exports/testme";
var dest = "/exports/testme.pdf";
var dest = "testme.pdf";
Run Code Online (Sandbox Code Playgroud)
等等
我错过了什么?
我正在尝试抓取一个网站,我只能依靠类和元素层次结构来找到正确的节点.但是使用我不能用来填写和提交表格等的Mechanize::Page#search
退货Nokogiri::XML::Element
.
我真的很想使用纯CSS选择器,但是对于类的匹配似乎也很简单_with
.但是,:not(.class)
与简单地使用CSS选择器相比,匹配的东西非常冗长,而我不知道如何匹配元素层次结构.
有没有办法将Nokogiri元素转换回Mechanize对象,甚至更好地直接从search
方法中获取它们?
javascript ×2
ruby ×2
ecmascript-6 ×1
installation ×1
legacy-code ×1
nokogiri ×1
teardown ×1
testunit ×1
unit-testing ×1