Tag: 多态

在Haskell中优化数组的性能

我正在研究类似MineCraft的世界的地形生成algorithm。 目前,我正在使用Simplex Noise Demystified(PDF)中的实现方法来使用单工噪声,因为单纯的噪声应该比Perlin噪声更快并且产生更less的伪像。 这看起来相当不错(见图片),但到目前为止,它也很慢。 对于块(16x16x128块)中的每个块运行噪声函数10次(对于地形高度,温度,树木位置等,我需要具有不同波长的噪声),每个块有3个八度的噪声,或者大约100万次调用噪声function总共大约需要700-800毫秒。 尽pipe事实上在algorithm中没有明显的昂贵的操作(至less对我来说),但对于产生具有任何体面的速度的地形而言,这至less是一个数量级太慢的速度。 只是楼,模,一些数组查找和基本的算术。 下面列出了algorithm(用Haskell编写)。 SCC的意见是为了分析。 我省略了二维噪声function,因为它们的工作方式是一样的。 g3 :: (Floating a, RealFrac a) => a g3 = 1/6 {-# INLINE int #-} int :: (Integral a, Num b) => a -> b int = fromIntegral grad3 :: (Floating a, RealFrac a) => V.Vector (a,a,a) grad3 = V.fromList $ [(1,1,0),(-1, 1,0),(1,-1, 0),(-1,-1, […]

来自基类的虚函数调用

假设我们有: Class Base { virtual void f(){g();}; virtual void g(){//Do some Base related code;} }; Class Derived : public Base { virtual void f(){Base::f();}; virtual void g(){//Do some Derived related code}; }; int main() { Base *pBase = new Derived; pBase->f(); return 0; } 哪个g()将从Base::f()调用? Base::g()或Derived::g() ? 谢谢…

generics与接口的实用优势

在这种情况下使用generics与接口有什么实际的优势: void MyMethod(IFoo f) { } void MyMethod<T>(T f) : where T : IFoo { } 也就是说,你可以在MyMethod<T>中做什么,你不能在非通用版本? 我正在寻找一个实际的例子,我知道理论上的差异是什么。 我知道在MyMethod<T> ,T将是具体types,但是我将只能在方法体内使用它作为IFoo。 那么这将是一个真正的优势?

检查一个对象是否属于Java中的类

有没有简单的方法来validation一个对象属于给定的类? 例如,我可以做 if(a.getClass() = (new MyClass()).getClass()) { //do something } 但是这需要每次实例化一个新的对象,而只是放弃它。 有没有更好的方法来检查“a”属于“MyClass”类?

jackson注释中的多态性:@JsonTypeInfo用法

我想知道是否可以使用@JsonTypeInfo注释接口。 我有一系列应该被序列化和反序列化的类。 这是我想要做的。 我有两个实现类Sub1 , Sub2实现MyInt 。 某些模型类具有实现types的接口引用。 我想反序列化基于多态的对象 @JsonTypeInfo(use=JsonTypeInfo.Id.NAME, include=As.WRAPPER_OBJECT) @JsonSubTypes({ @Type(name="sub1", value=Sub1.class), @Type(name="sub2", value=Sub2.class)}) public interface MyInt{ } @JsonTypeName("sub1") public Sub1 implements MyInt{ } @JsonTypeName("sub2") public Sub2 implements MyInt{ } 我得到以下JsonMappingException : 意外的令牌(END_OBJECT),预期的FIELD_NAME:需要包含typesID的JSONstring

Haskell中的存在与量化types

这些差别究竟是什么? 我想我明白存在types是如何工作的,他们就像在OO中有一个基类,没有下滑的方法。 普遍types如何不同?

为什么不能减lessJava子类中方法的可见性?

为什么编译器在重写子类时降低方法的可见性时会给出错误消息?

必须ASP.NET MVC控制器方法返回ActionResult?

作为ASP.NET MVC的新手,我一直想知道Controller方法的签名。 在我见过的所有例子中,他们似乎总是返回ActionResult,即使他们实际返回一个ViewResult实例或类似的东西。 这是一个常见的例子: public ActionResult Index() { return this.View(); } 在这种情况下,将方法声明为public ViewResult Index()并获得更强的types支持是否更有意义? 实验表明,这是有效的,所以它似乎是可能的。 我意识到可能会出现多态性需要的情况(例如,如果只想在某些情况下redirect,但在其他情况下显示视图),但是如果方法总是返回一个视图,我会发现ViewResult更多可取的。 在未来的兼容性方面,ActionResult显然提供了一个更强大的签名,但是如果一个人控制整个代码库,那么总是可以将方法的签名更改为更一般的返回types(如果将来有必要的话)。 是我还没有意识到的任何其他考虑,或者我应该继续前进,并与特定的返回types声明我的控制器方法?

多态在Python中如何工作?

我是新来的Python …来自主要Java背景,如果这个帐户的东西。 我想了解Python中的多态性。 也许问题是,我期待我已经知道投影到Python的概念。 但是我把下面的testing代码放在一起: class animal(object): "empty animal class" class dog(animal): "empty dog class" myDog = dog() print myDog.__class__ is animal print myDog.__class__ is dog 从我习惯的多态(例如java的instanceof ),我希望这两个语句都是正确的,因为狗的一个例子是一个动物,也是一个狗。 但是我的输出是: False True 我错过了什么?

如何使用inheritancebuild模RESTful API?

我有一个对象层次结构,我需要通过一个RESTful API公开,我不知道我的URL应该如何结构和他们应该返回。 我找不到任何最佳做法。 假设我有从动物inheritance的狗和猫。 我需要对狗和猫进行CRUD操作; 我也希望能够对动物做一般的操作。 我的第一个想法是做这样的事情: GET /animals # get all animals POST /animals # create a dog or cat GET /animals/123 # get animal 123 事情是/动物集合现在是“不一致的”,因为它可以返回并采取不完全相同的结构(狗和猫)的对象。 有一个集合返回具有不同属性的对象是否被认为是“RESTful”? 另一个解决scheme是为每个具体types创build一个URL,如下所示: GET /dogs # get all dogs POST /dogs # create a dog GET /dogs/123 # get dog 123 GET /cats # get all cats POST […]