小编Cod*_*rer的帖子

我可以显式引用被同名本地阴影的JavaScript全局变量吗?

我已经看到很多关于JavaScript中全局和功能范围之间差异的帖子,这里有很多链接.我也看到了关于Python的确切问题.所以我想知道的是,当"更接近"的范围也有一个具有相同名称的变量时,如何访问全局变量?

var a = "global";
function b(){
  var a = "local";
  var magic = ...; // somehow put "global" in magic
  console.log(magic); // should print "global"
}
Run Code Online (Sandbox Code Playgroud)

仅在浏览器中,我发现您可以使用它window.a来指定全局.服务器端有什么用吗?

javascript

16
推荐指数
1
解决办法
7429
查看次数

为什么必须将"exec"(而不是"eval")用于Python导入语句?

我正在尝试使用Jython从Java中运行一段Python.如果我使用exec语句导入,一切正常.

PythonInterpreter pi = new PythonInterpreter();
pi.exec("import re");
PythonObject o = pi.eval("re.match('abc', 'abc123')"); // returns a MatchObject
o = pi.eval("re.match('abc', 'def123')"); // returns Py.None
Run Code Online (Sandbox Code Playgroud)

但是,如果我尝试将两条线组合在一起,那么所有的地狱都会破裂.这个:

PythonInterpreter pi = new PythonInterpreter();
pi.eval("import re"); // exception!
PythonObject o = pi.eval("re.match('abc', 'abc123')"); // never gets here
o = pi.eval("re.match('abc', 'def123')"); // ....
Run Code Online (Sandbox Code Playgroud)

...引发异常"no viable alternative at input 'import'", ('<string>',1,0,'import re\n').

这很重要,因为理想情况下我希望能够将整个脚本作为单个字符串进行评估,而不必将导入分成单独的部分.难道我做错了什么?有没有另一种方法告诉Jython"采取这整个脚本,包括导入,然后运行它,然后给我一个结果"?这需要在运行时 - .class不能将Python预编译到文件中.

python jython eval

13
推荐指数
2
解决办法
6467
查看次数

在同构 Typescript 库中引用特定于平台的类型的正确方法

我正在尝试编写一个 Typescript 库,我希望能够在针对浏览器和 Node.js 时包含该库。我有两个问题:在代码主体中引用特定于平台的类型,以及将这些类型包含在.d.ts伴随转译的 JS 生成的声明中。

在第一种情况下,我想写一些类似的东西

  if (typeof window === "undefined") {
    // Do some Node-y fallback thing
  } else {
    // Do something with `window`
  }
Run Code Online (Sandbox Code Playgroud)

如果我不包含"dom"lib编译器选项中(也就是说,如果我只是说lib: ["es2016"]in ),则编译失败,因为未定义tsconfig全局。window(Usingwindow只是 out of 的一个示例lib.dom.d.ts,也可能是fetchor a ResponseorBlob等​​。)重点是,通过在使用全局对象之前检查全局对象是否存在,代码在运行时应该是安全的,它是类型我无法弄清楚的一面。

在第二种情况下,我在构建库后尝试包含该库时遇到错误。"dom"我可以使用in选项构建库lib,并且生成的输出包括带有例如的键入declare export function foo(x: string | Blob): void。问题是,如果使用的代码不包含Blob(无"dom"库)的定义,则它无法编译,即使它实际上只是使用fooa进行调用string(或 …

node.js typescript isomorphic-javascript

13
推荐指数
1
解决办法
1167
查看次数

我应该如何在Maven管理的Java项目中发现测试资源文件?

我有一个使用普通Maven结构的项目,例如

module
\ src
  \ main
    - java
    - resources
  \ test
    - java
    - resources
Run Code Online (Sandbox Code Playgroud)

等等test/resources,我想为我正在编写的解析器保留一组测试输入文件,然后通过测试套件运行目录中的所有文件.正如现在所写,测试代码在命令行中运行,但在通过Eclipse JUnit插件运行时失败:

File file = new File("src/test/resources");
file.list();
Run Code Online (Sandbox Code Playgroud)

(我实际上正在使用a FilenameFilter,但我正在尝试简化.)

在使用调试器进行单元测试之后,问题结果是我构建的文件指向/path/to/workspace/myproj/src/test/resources,而实际文件驻留在/path/to/workspace/myproj/modulename/src/test/resources(它是Maven多模块项目).显然,mvn test从命令行运行时这不是问题.

我想我的问题是双重的:一,我做错了吗?我看到很多人使用类加载器来发现资源,就像在这个问题中一样,但是我不想要特定类型的所有资源,只需要测试/资源下的一个目录.二,如果这首先不是一个可怕的想法,我是否有配置错误(例如它"应该"工作)?这是Eclipse的错,Maven问题还是什么?

java eclipse resources unit-testing maven

11
推荐指数
2
解决办法
7877
查看次数

如果我在JUnit4中@Ignore测试类,@ BeforeClass是否还在运行?

快速背景:我几天来一直在寻找一个Maven/Surefire测试运行问题,并且我已经将它缩小到少数测试怀疑.我看到的行为是疯狂的.我开始mvn clean test:250次测试运行,0次跳过.现在,我将可疑测试移至并重src/test/java试:146次测试运行,0次跳过!Maven的输出没有提供其他测试没有运行的线索,即使有-X标志.

这让我想到了一个问题:我称之为"怀疑"测试的原因是整个班级都是用@Ignore装饰的,所以我想在我的测试源中包含它应该根本没有效果.然后它发生在我身上 - 那些类具有管理虚拟Zookeeper服务器的 @ BeforeClass/@ AfterClass方法 .它之前产生了不稳定的行为,这就是我们进行@Ignored测试的原因.

如果JUnit运行前/后代码但忽略了测试,我不知道会发生什么(但它可能是超级糟糕的).这发生了吗?这应该发生吗?如果是这样,我怎么应该说"供参考,这里有一个测试,应该工作,但需要有固定"时,它包括@BeforeClass/@AfterClass?同样具有重大意义的是:这对Surefire/Maven到底是怎么回事,它会导致不相关的测试从地球掉下来

junit unit-testing surefire maven

11
推荐指数
2
解决办法
1万
查看次数

JQuery的getJSON()没有正确设置Accept头?

看起来人们过去曾遇到过Accept标题的问题,但我不确定我的问题是否相关.使用jQuery 1.4.2,我在使用JSON时遇到了麻烦getJSON().我可以在Firebug中观察请求/响应,看起来问题的根源是有问题的资源根据Accept标头返回不同的结果.即使文档说它应该设置,在Firebug中它显示为" / " - 显然,我想要"application/json".这是一个已知的错误?我应该设置一些我不知道的旗帜吗?

ETA:请求是跨站点的,如果这很重要,但我传递了一个callback=?查询参数,因此JQuery(成功!)将其视为JSONP.我在这个特殊情况下调用的服务支持一个接受覆盖查询参数(&accept=application/json),所以我让它手动工作,但我仍然认为标题搞砸是奇怪的,并希望我能够修复它,所以在处理可能不那么宽容的不同服务时,我不再遇到这种情况.我没有一种简单的方法来复制/粘贴我的开发环境中的代码,但这里是要点:

$.getJSON(baseURL + "?item=" + itemNum + "&callback=?", function(data){
  console.log(data);
}
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,这并不是很复杂,并且应该(我99%肯定......)导致XHR与Accept头一起发送application/json.就像我说的那样,根据Firebug的Net控制台,情况并没有发生.如果重要,这是在Firefox 3.6.8中.

再次ETA:对于仍在读这篇文章的人,是的,它仍在发生,不,我不知道为什么.就像我说的,简单的getJSON()调用,真正的基本语法,跨站点,被视为JSONP,因为它包含一个回调查询参数.仍然愿意接受建议!

ajax jquery json getjson

10
推荐指数
1
解决办法
1万
查看次数

如何用CSS模拟"<TABLE RULES>"?

我正在使用ExtJS编写Web应用程序.我把一张桌子放在桌子里面,由于种种原因,不可能将它全部重构成一个带有rowspan/colspan等的大桌子.

"外部"表格的单元格周围有边框.我希望我的"内部"表格其单元格之间有边界,这样我最终会"分裂"现有("外部")单元格.

如果它让事情变得更清楚,那就是我正在拍摄的,因为(可怜的)ascii art:

-----------------
|               |
|     |   |     |
|  -----------  |
|     |   |     |
|  -----------  |
|     |   |     |
|               |
-----------------
Run Code Online (Sandbox Code Playgroud)

("内部"表看起来像一个井字游戏网格;"外部"表格的单元格具有完整的边框)

我环顾四周,发现了一个<table>名为的属性RULES,听起来就是这样.但是,它似乎得不到很好的支持,无论如何我不应该把风格放在标记中(对吧?).我发现的文档说"使用CSS代替",但我似乎无法找到一种简单的方法来说明"在单元格之间放置边框,但如果单元格的边缘接触到表格的外部则不会" .救命?

html css html-table border

10
推荐指数
2
解决办法
2万
查看次数

"http:// central"在我的Maven settings.xml中意味着什么?

我现在一直在复制"样本" settings.xml文件,几乎所有文件似乎都包含一个带有URL的存储库http://central.这让我很烦,因为当然在本地域上可能有一台名为"central"的机器,所以这是一个有效的URN,但它也必须(可能?)对Maven有一些特殊的意义.

它只是常用的速记,但实际的URL被忽略了吗?我可以用其他东西替换它,还是完全删除它?是否记录在任何地方?

如果这很重要,我会在一个公司网络上发展,该公司网络有一个内部iBiblio镜像,它对我们来说是"中心".

maven

10
推荐指数
1
解决办法
8357
查看次数

当使用Webpack需要CSS /图像资源时,Typescript编译器"找不到模块"

我正在编写vanilla Javascript,但使用Typescript编译器的checkJs选项在VSCode中进行类型检查.我有Webpack设置加载各种资产类型(CSS,图像等),这适用于构建,但Code将这些语句视为错误.例如,在此代码中

require("bootstrap");
require("bootstrap/dist/css/bootstrap.css");
var img = require("../img/image.png");
Run Code Online (Sandbox Code Playgroud)

第一行很好,但接下来的两行都在(字符串)参数下显示错误require(),使用工具提示"找不到模块(名称)".

我已经安装@types/webpack@types/webpack-env,其固定resolve()resolve.context().我错过了另一个打字包或者这是我需要在DT问题跟踪器上讨论的问题吗?

javascript typescript webpack visual-studio-code

10
推荐指数
1
解决办法
4863
查看次数

如何使用Windows窗体单选按钮进行数据绑定?

我的数据库中有一个二进制字段很难在UI中使用单个"Is XXXX?" - 类型复选框进行描述.我宁愿使用一对单选按钮(例如"Do it the Foo way"和"Do it the Bar way"),但是现在我表单上的所有其他字段都是数据绑定到业务对象.我想将这对单选按钮数据绑定到业务对象,但还没有找到一个好方法.我可以将其中一个按钮绑定到该字段,以便在选择按钮时将该字段设置为"true",但是在选择另一个按钮时取消选择第一个按钮(即,两个单选按钮已正确配对),字段的值不会更新以反映这一点.

我想能说

button1.DataBindings.Add(new Binding("checked", source, "useFoo"));
button2.DataBindings.Add(new Binding("checked", source, "!useFoo"));
Run Code Online (Sandbox Code Playgroud)

但我很确定它会在它运行时抛出.有没有更简单的方法,或者我应该更多地考虑如何单个复选框?我不想添加额外的功能来处理这个微不足道的事情......

ETA:一位评论者建议考虑下拉(ComboBox).我曾考虑过这个问题,但是如何将数据绑定到业务对象的数据库/属性中的布尔字段?如果我将SelectedItem绑定到useFoo属性,那么Items集合中会包含什么?我是否必须添加"True"和"False",或者我可以以某种方式添加一个键/值对对象,将显示的项目("使用Foo"/"不使用Foo")绑定到它后面的布尔值?我在找这个文档时遇到了麻烦.


关于答案:我最后使用的解决方案涉及修改业务对象 - 基本思想与Gurge发布的基本思路非常相似,但在我阅读他的回复之前我分别想出了它.简而言之,我添加了一个单独返回的属性!useFoo.一个单选按钮被绑定source.UseFoo,另一个被绑定source.UseBar(新属性的名称).重要的是要确保新房产既有吸气剂又有吸气剂,否则你最终会遇到奇怪的行为.

c# data-binding radio-button winforms

9
推荐指数
2
解决办法
2万
查看次数