polymorphism相关内容
我有一个多态函数,例如: convert :: (Show a) =>一个->细绳convert = " [label=" ++ (显示一个) ++ "]" 但有时我想给它传递一个 Data.Map 并做一些更花哨的键值转换.我知道我不能在这里进行模式匹配,因为 Data.Map 是一种抽象数据类型(根据 this similar SO question),但我没有成功为此使用警卫,而且我不确
..
我了解动态/静态多态性取决于应用程序设计和要求.但是,如果可能的话,是否总是选择静态多态性而不是动态多态性?特别是,我可以在我的应用程序中看到以下两种设计选择,这两种选择似乎都被建议不要使用: 使用 CRTP 实现静态多态性:没有 vtable 查找开销,同时仍以模板基类的形式提供接口.但是,使用大量的 switch 和 static_cast 来访问正确的类/方法,这是危险的 动态多
..
我是一名 AP Java 学生,我正在准备考试.我遇到了这个问题,我不明白答案: 考虑以下类: 公共A类{公共 A() { methodOne();}public void methodOne() { System.out.print("A");}}公共类 B 扩展 A{公共 B() { System.out.print("*");}public void methodOne() { Sy
..
运行时多态性和编译时多态性有什么区别?另外,早期绑定和后期绑定有什么区别?示例将不胜感激. 解决方案 编译时多态 方法重载就是一个很好的例子.您可以有两个具有相同名称但具有不同签名的方法.编译器会在编译时选择正确的版本. 运行时多态性 在子类中覆盖父类的虚方法就是一个很好的例子.另一个是从接口实现方法的类.这允许您在使用子指定的实现时在代码中使用更通用的类型.给定以下类定
..
使用 Haskell 的类型类,它似乎启用了即席多态,但它的函数声明似乎是参数多态.我是否混合了我对不同事物的理解? 解决方案 确实,Haskell 支持(更高级别的)参数多态性和 ad hoc(或 有界)多态性.Haskell 中的参数多态性通过其 Hindley-Milner/System F 类型系统得到支持.通过类型类支持临时多态性. 关于类型类和即席多态性的起源,请参阅 W
..
..
我正在为我的 Java 应用程序设计一个简单的数据访问对象.我有一些类(记录)代表表中的单行,例如 User 和 Fruit. 我想要一个方法来获取特定类型的所有记录. 暂时我是这样的: 公开列表获取所有用户(){...}公开列表getAllFruits() {...}…… 但我想要一个像这样的单一多态方法(错误): 公开名单getAllRecords(类类
..
我刚刚开始使用 Scala,而我认为应该很容易理解的东西却很难.我正在尝试实现以下功能: def square(x:Int):Int = { x * x } 这很好用,但如果我想让这个函数适用于任何类型的数字,我希望能够执行以下操作: def square[T 这抱怨并说:错误:值*不是类型参数T的成员 我需要为此实现一个特征吗? 解决方案 那是我在 Stac
..
众所周知,有些语言有接口的概念.这是Java: 公共接口可测试{无效测试();} 如何在 C++(或 C++11)中以最紧凑的方式实现这一点,并且代码噪音很小?我很欣赏不需要单独定义的解决方案(让标题就足够了).这是一种非常简单的方法,即使我也觉得有问题 ;-) 类可测试{上市:虚拟无效测试()= 0;受保护:可测试();可测试(const Testable& that);可测试&opera
..
其他潜在贡献者请注意:请不要犹豫,使用抽象或数学符号来表达您的观点.如果我发现您的答案不清楚,我会要求您解释清楚,否则请随意以舒适的方式表达自己. 明确一点:我不是在寻找“安全的"head,head 的选择也不是特别有意义.问题的核心是关于 head 和 head' 的讨论,它们用于提供上下文. 我已经用 Haskell 破解了几个月了(以至于它已经成为我的主要语言),但我承认我对一些
..
我写了一段代码来理解运行时多态性... 类 S{诠释我=1;无效米(){System.out.println("ssssssssssssssssssss");}}公共类 A 扩展 S{诠释我=2;无效米(){System.out.println("aaaaaaaaaaaaaaaaaaaaaaaa");}公共静态无效主要(字符串[]参数){S a=(S)新 A();System.out.print
..
我有 3 个课程圆形、矩形和方形 我想获取上述每个类所需的数据并由用户创建. 表示用户可以想要什么,例如 3 个 Circles 、2 个 Rectangles 和 7 个 Squares .形状的数量取决于用户. 然后我想将它们保存在 unit list 中并调用我的类方法,它们是 calculateArea 和 calculatePerimeter 并显示周长和面积其中有他们
..
Android 上的 Realm 不支持模型继承/多态.p> 那么有没有办法在 Android 上共享字段?我们有 5 个模型,它们都共享相同的同步相关字段和代码.我们在当前的 SQLite 模型中使用继承;如果我们切换到 Realm,我们唯一的选择是在 5 个模型类中复制同步字段吗? 作为一种解决方法,我正在考虑让这些类实现一个 Syncable 接口,其中包含用于共享字段的 gette
..
Haskell 的类型系统功能强大,因其数学严谨性和逻辑合理性而广受喜爱,另一方面,像下面这样幼稚的东西让我想知道为什么它不能按直觉预期工作? 例如为什么 Int 不能在 x3 上转换为 Num 但 f1 接受 Int反对签名Num? 前奏曲>让 x1 = 1前奏>:t x1x1 :: Num a =>一个前奏>让 x2 = 1 :: Int前奏>:t x2x2 :: 整数前奏>让 x3
..
从 monad 出来的函数的类型发生了一些变化. 在 GHCI 中: >:t 地图地图 :: (a -> b) ->[一]->[乙]>a :ta :: (GHC.Prim.Any -> GHC.Prim.Any)->[GHC.Prim.Any] ->[GHC.Prim.Any] 此更改使函数难以存储在更高级别的类型中. 这里发生了什么,我可以让它不发生吗? (
..
这不是类型检查: 模块不类型检查 where {导入前奏(要么(..));defaultEither :: a ->b c ->要么 c;defaultEither a (Left _) = Left a;defaultEither _ b = b;} 但这确实: 模块 DoesTypeCheck where {导入前奏(要么(..));defaultEither :: a ->b c ->
..
当我分配一个对象时,这段代码可以正常工作.当我尝试添加数组语法时,它会出现段错误.为什么是这样?我的目标是向外界隐藏 c 类在内部使用 b 对象的事实.我已将程序发布到 codepad 供您使用. #include 使用命名空间标准;//文件 1甲级{上市:虚空 m() { }虚拟 ~a() { }};//文件 2b类:公共a{诠释 x;上市:void m() { cout
..
说:苹果派生自一个基础水果类,然后有一个类 ApplePicker 派生自一个基础 FruitPicker 类. ApplePicker 类具有 vectorappleList,水果选择器类有一个指向 vector 的指针,即 vector*fruitList. 我需要能够将向量设置为这个指针,以便抽象方法可以在水果采摘器类中运行(因为它们只关心水果成员).但是当我尝试这样做
..
我正在尝试将 Evaluation 模型添加到我的 Rails 4 应用程序中. 我制作了一个名为 evaluation.rb 的模型.它有: 类评估 真的属于_to :evaluable, :polymorphic =>真的 我还对 evaluator 和 evaluable 表示担忧: 模块评估器扩
..
为什么多态性依赖于继承?代码示例? 解决方案 多态性不天生就依赖于继承. 多态是一个相当抽象的概念,它为不同类型的值提供统一的接口. 在 Java 或 C# 等常见的面向对象语言中,这些接口是通过类继承提供的,但这是多态性的一种可能实现,而不是一般的多态性概念. Duck 类型、结构类型、C++ 样式模板或类型类都提供了多态性的其他实现. 只需查看所有这些多态代码,
..