第一:我使用的是Excel 2007,但代码也必须适用于Excel 2003.
我的问题如下:我需要访问可能已关闭的不同工作簿中的单元格.可以在网络上找到以下代码:
Function Foo()
Dim cell As Range
Dim wbk As Workbook
Set wbk = Workbooks.Open("correct absolute path")
' wbk is Nothing here so the next statement fails.
Set cell = wbk.Worksheets("Sheet1").Range("A1")
Foo = cell.Value
wbk.Close
End Function
Run Code Online (Sandbox Code Playgroud)
遗憾的是,wbk在公开声明之后是没有的(我很乐意提供更好的错误信息,但不知道我是怎么做的;我为真正的IDE和有用的语言提供了什么:/).绝对路径是正确的,并指向有效的excel xlsx文件.
另外我假设最好的方法是"缓存"工作簿,而不是每次调用函数时都打开/关闭它?任何可能的问题(除了必须处理工作簿已经打开的情况)?
单步执行时的图像:

在函数式语言(实际上我用过的所有函数式语言)中,语句和表达式之间没有区别,每个代码块的最后一个值是块的"返回值".另一方面,通常不被认为是纯粹功能的语言通常会引入这种区别.
作为我正在谈论的一个例子,以下python代码打印None:
def foo():
5 + 5
print(foo())
Run Code Online (Sandbox Code Playgroud)
而方案代码打印 10
(define (foo) (+ 5 5))
(display (foo))
Run Code Online (Sandbox Code Playgroud)
显然,我对那些喜欢一种风格的人的主观答案不感兴趣,而是客观原因.
对我而言,这种区别似乎使得语言的语法和实现更加复杂(一个不那么明显的例子就是模板和void类型的c ++标准中的必要例外,或者引入了"快捷方式if语句",比如?c - 受影响的语言)没有真正的好处 - 但很可能有一个原因,即使是新的现代语言仍然有这种区别.
language-agnostic procedural-programming functional-programming
我正在阅读John Regehr的博客,了解他如何给学生们一个关于饱和算术的任务.有趣的是,代码必须按原样编译,同时使用typedef指定不同的整数类型,请参阅以下完整标题的摘录:
typedef signed int mysint;
//typedef signed long int mysint;
mysint sat_signed_add (mysint, mysint);
mysint sat_signed_sub (mysint, mysint);
Run Code Online (Sandbox Code Playgroud)
相应的无符号版本很容易实现(虽然我实际上不确定填充位是否也不会产生问题),但我实际上看不出如何获得未知签名的最大值(或最小值)在C型,而无需使用宏MAX_UND MIN_或导致未定义的行为.
我在这里遗漏了什么,或者作业是否有缺陷(或者更可能是我错过了他给学生们的一些重要信息)?
我想把这个功能:
function Test-Any {
[CmdletBinding()]
param($EvaluateCondition,
[Parameter(ValueFromPipeline = $true)] $ObjectToTest)
begin {
$any = $false
}
process {
if (-not $any -and (& $EvaluateCondition $ObjectToTest)) {
$any = $true
}
}
end {
$any
}
}
Run Code Online (Sandbox Code Playgroud)
到一个模块中。我刚刚创建了一个新模块 my-scripts.psm1 文件,其中仅包含上述函数并使用Import-Module <absolute path>.
问题是,如果我使用模块中的函数1..4 | Test-Any { $_ -gt 3 }会返回 false,因为$_未设置为来自管道的值。
如果我在脚本中正常定义该函数并从那里使用它,它会按预期工作(为 $_ 分配整数值)。
Windows 7 下的 PowerShell v4.0 会发生这种情况。
因此我被要求将一些内部帮助应用程序移植到Mac OS X 10.7.
因为平台相关代码无论如何都很小,但是一个应用程序需要一个系统范围的快捷方式来运行(即RegisterHotkey功能)而且我找不到任何关于如何在Mac上执行此操作的文档.
该程序使用PyQt gui和Python 3.2.而windows的相应代码基本上是:
def register_hotkey(self):
hwnd = int(self.winId())
modifiers, key = self._get_hotkey()
user32.RegisterHotKey(hwnd, self._MESSAGE_ID, modifiers, key)
Run Code Online (Sandbox Code Playgroud)
然后接收热键事件:
def winEvent(self, msg):
if msg.message == w32.WM_HOTKEY:
self.handle_hotkey()
return True, id(msg)
return False, id(msg)
Run Code Online (Sandbox Code Playgroud)
请注意,我不需要python变体,我可以轻松编写一个简单的c扩展 - 所以C/objective-c解决方案也是受欢迎的.
根据Microsoft(“来自.NET Standard的.NET Framework库参考”),我们可以引用来自.NetStandard 2.0项目的完整框架库<= .NET 4.6.1,以帮助迁移从Visual Studio 15.3开始的现有代码。
那么,为什么以下方法不起作用?
NetStandard / NetStandard.csproj:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\FullFramework\FullFramework.csproj" />
</ItemGroup>
</Project>
Run Code Online (Sandbox Code Playgroud)
FullFramework / FullFramework.csproj
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net461</TargetFramework>
</PropertyGroup>
</Project>
Run Code Online (Sandbox Code Playgroud)
给我以下错误:
error NU1201: Project FullFramework is not compatible with netstandard2.0 (.NETStandard,Version=v2.0). Project FullFramework supports: net461 (.NETFramework,Version=v4.6.1)
error : Project '..\FullFramework\FullFramework.csproj' targets 'net461'. It cannot be referenced by a project that targets '.NETStandard,Version=v2.0'.
Run Code Online (Sandbox Code Playgroud) 为什么PEP-343在这种情况下使用type()?
mgr = (EXPR)
exit = type(mgr).__exit__ # Not calling it yet
value = type(mgr).__enter__(mgr)
Run Code Online (Sandbox Code Playgroud)
难道我们不能使用exit = mgr.__exit__和value = mgr.__enter__()?对我来说似乎更简单,但我认为我错过了一些东西.
我想要一个水平居中的"浮动"div,即即使用户滚动也始终位于屏幕顶部的div.
使用以下CSS,我将div完全放在左侧:
#guiBar {
margin-left: auto;
margin-right: auto;
position: fixed;
}
Run Code Online (Sandbox Code Playgroud)
margin: 0 auto也没有帮助(大概是因为这不起作用position: fixed?
我真的不在乎解决方案如何工作,所以javascript或一些html5技巧将与纯css一样好.我已经尝试过从starx找到的解决方案,但这似乎也不适用于position:fixed.还有这个也不起作用(即它是左中心 - 不确定是否有一些<input class="guiButton" type="image" src="/icons/some.png" />固定大小的定义.)
问:
1)在多线程应用程序中,应用程序可能产生的线程数有限制.
2)如果存在这样的限制,JVM是否终止应用程序并使用什么错误代码.
编辑
3)如果应用程序产生了非常快速的成功,JVM是否会将其检测为"粗略"应用程序
提前致谢
我有以下代码(尽可能简化):
#include <vector>
#include <algorithm>
using std::vector;
enum class Foo {
BAR, BAZ
};
void print_to_file(const vector<const vector<Foo> >& sequences) {
std::for_each(sequences.begin(), sequences.end(), [](const vector<Foo>& sequence) {
});
}
int main(int argc, char **argv) {
return EXIT_SUCCESS;
}
Run Code Online (Sandbox Code Playgroud)
在编译时,g++ (SUSE Linux) 4.7.1 20120723 [gcc-4_7-branch revision 189773]因为g++ --std=c++11 test.cpp我收到以下错误消息:
In file included from /usr/include/c++/4.7/x86_64-suse-linux/bits/c++allocator.h:34:0,
from /usr/include/c++/4.7/bits/allocator.h:48,
from /usr/include/c++/4.7/vector:62,
from test.cpp:1:
/usr/include/c++/4.7/ext/new_allocator.h: In instantiation of ‘struct __gnu_cxx::new_allocator<const std::vector<Foo> >’:
/usr/include/c++/4.7/bits/allocator.h:89:11: required from ‘class std::allocator<const std::vector<Foo> >’
/usr/include/c++/4.7/bits/alloc_traits.h:89:43: required …Run Code Online (Sandbox Code Playgroud) 以下代码给出了编译时错误:
#include <chrono>
int main() {
auto day = 24h;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
错误C3688:无效的文字后缀'h'; 文字运算符或文字运算符模板'operator'"h'未找到.
我在Visual Studio 2015 Update 1上尝试这个,根据这个应该工作,所以发生了什么?