问题标签 [with-statement]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
4026 浏览

python - 我可以使用带有语句的python进行条件执行吗?

我正在尝试编写支持以下语义的代码:

除其他事项(设置、清理)外,范围应决定此部分是否应运行。
例如,如果用户将程序配置为绕过“action_name”,那么在评估 Scope() 之后,do_some_other_stuff() 将在不先调用 do_something() 的情况下执行。
我尝试使用这个上下文管理器来做到这一点:

但有RuntimeError: generator didn't yield异常(什么时候action'bypass'
我正在寻找一种方法来支持这一点,而不会退回到更冗长的可选实现:

有谁知道我怎么能做到这一点?
谢谢!

PS我正在使用python2.7

编辑:
解决方案不一定要依赖with语句。没有它,我只是不知道如何表达它。本质上,我想要上下文形式的东西(支持设置和自动清理,与包含的逻辑无关)并允许基于传递给设置方法并在配置中选择的参数进行条件执行。
我还考虑了使用装饰器的可能解决方案。例子:

但我不想基于这些范围强制执行过多的内部结构(即代码如何划分为函数)。
有没有人有一些创造性的想法?

0 投票
3 回答
1898 浏览

javascript - 在javascript中使用with是不好的做法吗?

我认为像这样的东西with(Math){document.body.innerHTML= PI}并不是很好的做法。

0 投票
1 回答
232 浏览

sql-server-2005 - 使用基于时间间隔的分组进​​行数据清理 - sql2005

我在一个表中有以下数据,我想报告这些数据而不必删除任何行。

ActiveSearchID---SearchDate---------SearchPhrase
1---------------------2010 -12-15 12:01:11.587---argos
2---------------------2010-12-15 12:03:40.193---muji
3 ----------2010-12-15 12:03:42.370---无印良品
4-------------- -------2010-12-15 12:04:29.167---办公用品
5---------------------2010-12-15 12 :05:11.590---熔岩
9---------2010-12-15 12:08:38.920---索尼 vaio
10---- ---------------2010-12-15 12:08:41.170---索尼vaio
12------- 2010-12-15 12:09:09.920---索尼vaio电池
13-------2010-12-15 12:09:17.487---索尼vaio 电池
14----------2010-12-15 12:17:10.980---sony vaio 电池
15----------- --------2010-12-15 12:17:12.170---阿尔戈斯

我试图获得的报告是选择在 5 分钟间隔内搜索过的搜索短语的第一个实例。因此,例如查询 no 上述信息将导致以下结果:
SearchDate----------------SearchPhrase
2010-12-15 12:01:11.587---argos
2010-12 -15 12:03:40.193---muji
2010-12-15 12:04:29.167---办公用品
2010-12-15 12:05:11.590---熔岩
2010-12-15 12:08:38.920 ---sony vaio
2010-12-15 12:09:09.920---sony vaio 电池
2010-12-15 12:17:12.170---argos


我已经尝试了以下查询,但我仍然得到重复:

select t1.searchdate, t1.searchphrase from activesearches t1 inner join activesearches t2 on t1.searchphrase = t2.searchphrase and t1.searchdate < t2.searchdate where datediff(s, t1.searchdate, t2.searchdate) <= 300 order by searchdate


我想使用“WITH SearchPhrases AS ()”类型的查询,但我无法理解它。

谢谢

0 投票
1 回答
258 浏览

python - 我可以编写一个函数来检测它是否是从“with”语句调用的吗?

更具体地说,我可以检测是否EXPRwith EXPR: BLOCK语句中调用了函数吗?我试图让自己熟悉withpython中-statement的用法。作为第一步,我重新实现了一个示例,该示例生成标记文本,出现在参考contextlib.contextmanager暂时忽略异常处理)中。

这按预期工作。然后,我开始思考是否tag()也可以生成空元素:

在我天真的眼里,如果被调用者可以检测到它是否是从with-statement 调用的,这似乎是可行的。但是,我不知道这种检测是否可行。有没有这样的方法,如果有,怎么做?

0 投票
3 回答
5030 浏览

python - python的`with`语句目标意外地是None

好像我不明白 --- pythonwith语句。

考虑这个类:

现在,当使用它时with,就像在

我希望有一些输出,例如<test instance at memore blah>。但我得到None

这里有什么问题吗?任何建议都会有所帮助。

(我使用的是 Python 2.6.6。)

编辑:

感谢 ephement将我指向文档。该__enter__方法应阅读

0 投票
6 回答
29791 浏览

join - 可以将 DB2 WITH 语句用作 UPDATE 或 MERGE 的一部分吗?

我需要更新数据库表中的一些行。我如何识别要更新的行涉及一系列复杂的语句,我设法将它们归结为一系列 WITH 语句。现在我有了正确的数据值,我需要更新表格。

由于我设法通过 WITH 语句获取这些值,因此我希望在 UPDATE/MERGE 中使用它。一个简化的例子如下:

现在我有两列数据,我想用它们来更新一个表。因此,我没有在底部使用 select,而是尝试了各种合并和更新的组合,包括在 UPDATE/MERGE 上方使用 WITH 语句,或者作为 UPDATE/MERGE 语句的一部分。以下是我认为最接近我想做的事情:

所以它不起作用。我不确定这是否可行,因为我在互联网上没有找到将 WITH 语句与 UPDATE 或 MERGE 结合使用的示例。我有与 INSERT 一起使用 WITH 语句的示例,因此相信它是可能的。

如果有人可以提供帮助,那就太好了,如果我遗漏了任何有助于解决问题的信息,请告诉我。

免责声明:我提供的示例是我正在尝试做的简化版本,实际上可能没有任何意义!

0 投票
3 回答
984 浏览

vb.net - 当 IDisposable 不可用时,可以使用 With/End With (VB.NET) 吗?

在由于未实现Using而无法使用的情况下,以下代码是否可以用于/ ?这会导致内存泄漏还是设置一个实例变量然后将其设置为空会更好?IDisposableWithEnd With

0 投票
4 回答
296 浏览

python - python: Is there a way to get the code inside the with statement

I was hoping this would work:

and then:

would print:

Specifically, my intention is to take this code and create a function out of it. So I can do: with runInThreads() or with runManyTimesTillSuccess(),..

0 投票
1 回答
2658 浏览

sql-server-2005 - SQL Server/DB2:相同的查询返回不同的结果?

概括

我目前正在开展一个项目,我必须针对底层数据库引擎查询代表用户访问的记录的最后更改。

每个用户都可以(但不是强制)拥有儿童帐户。ID_PUSR子帐户存储在同一个数据表中,并通过表字段引用其父帐户。当帐户是主要帐户时,ID_PUSR is null

每次更改访问权限时,都会在数据库用户表中创建一条新记录,其中包含最后更新日期 ( DT_UPDT)。


数据样本

请考虑以下几点:

我仔细检查了两个数据库服务器中的数据表内容,我可以证明它们是相同的记录。


SQL/DB2 查询

此查询与 SQL Server 和 DB2 数据库引擎完全兼容:


不同的结果!

尽管我对上述 RDBMS 运行完全相同的查询,但我得到了不同的结果,如下所示:

IBM DB2

在我们看到两个数据库引擎之间的差异之前,这些结果似乎很好。注意字段中的日期值DT_UPDT

SQL 服务器

SQL Server 中的这些结果是我将在 DB2 中使用的结果。它们代表“好”数据。至于ID_USERS,它们只是 ID,重要的是日期。

问题

  1. 相同的查询如何使用两个支持 SQL ANSI 的引擎返回不同的结果?
  2. 是我似乎看不到的数据吗?
  3. DB2的WITH...AS ()解释与 SQL Server 有何不同?

Nota Benne:一个简单select * from USERS order by CD_USER的揭示了相同的数据。

0 投票
1 回答
1468 浏览

ms-access - Access 2003 VBA 中记录集字段规范的声明

我知道使用 VBA 在记录集中指定字段的两种方法:

但是在 With 块中会发生什么?

是否可以两者都做,或者有解决方法吗?