为什么以下在Delphi(XE)中生成错误?
unit UTest;
interface
type
TTest = class
public
procedure Foo<T>(A: T);
end;
implementation
{ TTest }
procedure TTest.Foo<T>(A: T);
begin
A.Add('hej');
end;
end.
Run Code Online (Sandbox Code Playgroud)
我认为Delphi中的泛型类型只是简单地插入到泛型函数中,因此如果与没有Add(string)方法的类型一起使用它只会出错.
我正在尝试使用PowerMock来模拟用于测试我们的Android应用程序(例如BluetoothSocket)的一些类.
我已经在PowerMock的谷歌代码页面上下载了所有依赖项的zip文件,并将它们添加到我的Android测试项目(包括构建路径).
但是当我尝试使用PowerMock时:
@RunWith(PowerMockRunner.class )
@PrepareForTest( NetworkUtil.class )
public class TestSendAck extends TestCase{
@Test
public void testGenerateURL() {
PowerMock.mockStatic( NetworkUtil.class );
EasyMock.expect( NetworkUtil.getLocalHostname() ).andReturn( "triumph" );
PowerMock.replayAll();
PowerMock.verifyAll();
}
}
Run Code Online (Sandbox Code Playgroud)
我得到以下堆栈跟踪:
java.lang.ExceptionInInitializerError
at org.easymock.internal.ClassProxyFactory.createEnhancer(ClassProxyFactory.java:249)
at org.easymock.internal.ClassProxyFactory.createProxy(ClassProxyFactory.java:159)
at org.easymock.internal.MocksControl.createMock(MocksControl.java:59)
at org.powermock.api.easymock.PowerMock.doCreateMock(PowerMock.java:2212)
at org.powermock.api.easymock.PowerMock.doMock(PowerMock.java:2163)
at org.powermock.api.easymock.PowerMock.mockStatic(PowerMock.java:287)
at se.metrima.mafield.test.TestSendAck.testGenerateURL(TestSendAck.java:19)
at java.lang.reflect.Method.invokeNative(Native Method)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:169)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:154)
at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:529)
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1448)
Caused by: java.lang.VerifyError: net.sf.cglib.core.ReflectUtils
at net.sf.cglib.core.KeyFactory$Generator.generateClass(KeyFactory.java:166)
at net.sf.cglib.core.DefaultGeneratorStrategy.generate(DefaultGeneratorStrategy.java:25)
at net.sf.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:216)
at net.sf.cglib.core.KeyFactory$Generator.create(KeyFactory.java:144)
at net.sf.cglib.core.KeyFactory.create(KeyFactory.java:116)
at net.sf.cglib.core.KeyFactory.create(KeyFactory.java:108)
at net.sf.cglib.core.KeyFactory.create(KeyFactory.java:104)
at net.sf.cglib.proxy.Enhancer.<clinit>(Enhancer.java:69)
... 19 more …Run Code Online (Sandbox Code Playgroud) 我正在开发一个带有flask框架作为后端的webapp,我需要提供身份验证.
由于这是我们在本地域上使用的内部应用程序,因此我选择使用其现有的域凭据对用户进行身份验证.
我使用的方法是win32security.LogonUser从pywin32成功登录时返回句柄.
我试图了解flask-login如何工作,但@login_manager.user_loader回调让我感到困惑.
它说我应该提供一个可用于重新加载用户的id,但是我没有数据库或持久存储来提供这种映射,因为我只是在检查用户是否通过身份验证时感兴趣.
我的User类看起来像这样:
class User(flask_login.UserMixin):
def __init__(self,username):
self.username = username
self.id = ???
Run Code Online (Sandbox Code Playgroud)
使用什么id,这个id如何映射回这个实例?
所以这是我的情况:我有两个包含变量(x,y,z等)的数学表达式.我已经使用shunting yard算法将它们编译为postfix ,现在我需要一种方法来测试它们是否在数学上相等.
例子:
x+5==5+x
x*2==x+x
4/(x/2)==8/x
Run Code Online (Sandbox Code Playgroud)
我最初的想法是抛出几千个不同的随机输入,看看评估结果是否相同.
我用这种方法预见的问题:精度问题,NaN情况和可能的溢出.
所有计算都使用Java的double类型完成.
有任何想法吗?:)
编辑:因为这是一个休闲游戏,解决方案不需要是完美的,只有足够好!
有没有可靠的方法来确定相机是否在Microsoft Surface上旋转?
基本上,我想知道设备中是否内置了特定的摄像头(因为它随后会随设备一起旋转),有没有办法查询?
我的问题是,当用户旋转设备时,我的相机视图被翻转,但我无法假设我应该只旋转读取帧,因为活动相机可能是外部USB相机.
我正在使用Media Foundation API阅读相机.
我正在Visual Studio 2010中设计一个功能区,我遇到了一个问题,我真的没有.
正如标题所说,如何更改组的大小?没有可视方式来更改默认大小,而是在使用时似乎自动调整大小.
我的主要问题是我想将标记为"test"的按钮放在编辑框的右侧,但它们会一直保持在彼此之上.
谢谢!
我目前正在开发Android应用程序的表示层.
我正在使用的api看起来像这样:
public interface errorInterface{
public void onError(String reason);
}
public interface if1 extends errorInterface{
public void dataReceived1(Data data);
}
public interface if2 extends errorInterface{
public void dataReceived2(Data data);
}
public void fetchData1(if1 receiver) {}
public void fetchData2(if2 receiver) {}
Run Code Online (Sandbox Code Playgroud)
那是; 获取数据,您提供的接收器将在未来的某个时间接收操作的结果.
当你需要一次只调用一个方法时,这非常有效,但现在我已经达到了需要一次调用10多个这样的方法的时候,他们需要一次执行一个.
如何以灵活优雅的方式解决这个问题?
谢谢!
我正在通过使用活动模式编写递归下降解析器来学习F#.
由于我的所有规则或部分活动模式都需要以不同的方式组合它们,但我对将活动模式作为参数传递的语法感到非常沮丧.
以下示例显示了我遇到的问题:
// Combines two patterns by chaining them.
let (|Chain|_|) (|Pattern1|_|) (* Should I use pipes here? *) (|Pattern2|_|) data =
match data with
|Pattern1 result ->
match result with
|Pattern2 result2 -> Some result2
|_ -> None
|_ -> None
// Stupid test patterns
let (|IfBiggerThan10ThenDouble|_|) value = if value > 10 then Some (value*2) else None
let (|IfLessThan100ThenDouble|_ |) value = if value < 100 then Some (value*2) else None
match 20 with
// Do I …Run Code Online (Sandbox Code Playgroud) 我正在使用FSharp-Data中的JSONProvider自动为我正在使用服务的示例响应消费的Web服务创建类型.
但是,当涉及到在服务中重用的类型时,我有点困惑,例如,有一个api方法返回X类型的单个项,而另一个返回X列表,依此类推.我真的必须为此生成多个定义,并不意味着我会为同一个东西重复类型吗?
所以,我想我真正想问的是,有没有办法从JSON样本生成的类型中创建复合类型?
下面的代码编译并在clang上工作,但失败并出现"错误:在gcc上无效使用非静态数据成员'Outer :: a'":
#include <functional>
#include <vector>
#include <assert.h>
#include <iostream>
#include <memory>
class Outer
{
public:
bool a = false;
virtual void f() = 0;
template <typename T>
class Inner : public T
{
public:
virtual void f() override
{
a = true; // Note: accessed through inheritance, not through outer scope
}
};
};
struct Foo : Outer { };
int main()
{
Outer::Inner<Foo> f;
f.f();
}
Run Code Online (Sandbox Code Playgroud)
在内部类中添加"this-> a"使其适用于两个编译器,但我想知道正确的行为是什么以及标准对此有何看法.
有趣的是,上面的代码在VS2017的工作中作为更大的代码库的一部分工作,但是当我在家中与VS2017隔离时,它失败并出现与GCC相同的错误.
你可以尝试在这里编译它:
java ×3
f# ×2
.net ×1
algorithm ×1
android ×1
asynchronous ×1
c# ×1
c++ ×1
camera ×1
clang ×1
delphi ×1
delphi-xe ×1
f#-data ×1
flask ×1
flask-login ×1
gcc ×1
generics ×1
json ×1
junit ×1
math ×1
ms-office ×1
parsing ×1
powermock ×1
python ×1
ribbon ×1
surface-pro ×1
unit-testing ×1
windows ×1