首页 > TAG信息列表 > duck-typing

在PHP中添加对象和整数的语义?

class wat { public $a = 3.14; public $x = 9; public $y = 2; } $a = new wat(); var_dump(1000 + $a); var_dump($a + 1000); 输出为: int(1001) int(1001) 好吧,将wat *对象添加到一个整数显然不是正确的选择,因为PHP抱怨它“无法将wat类的对象转换为int”,但是

C#和Java是鸭式的吗?

今天,我们使用close()方法发生了一件奇怪的事情. 这是有疑问的代码: interface ICloseable { void Close(); } public class Closer { public void Close() { Console.WriteLine("closed"); } } public class ConcreteCloser : Closer, ICloseable { }

为什么打字稿不允许在字符串中调用concat | Javascript字符串[]类型?

const s: string = 'foo'; const pass1 = (origin: string) => origin.concat(s); const pass2 = (origin: string[]) => origin.concat(s); type S = string | string[]; const error = (origin: S) => origin.concat(s); 上面的代码.我可以用字符串或string []类型调

如何在不注释类型的情况下添加数据类字段?

当数据类中存在一个字段,其类型可以是任何类型时,如何省略注释? @dataclass class Favs: fav_number: int = 80085 fav_duck = object() fav_word: str = 'potato' 似乎以上代码实际上并未为fav_duck创建字段.它只是使它成为普通的旧类属性. >>> Favs() Favs(fav_num

javascript – 为什么TypeScript中的类允许使用duck typing

在TypeScript中看起来绝对没问题(从编译器的角度来看)有这样的代码: class Vehicle { public run(): void { console.log('Vehicle.run'); } } class Task { public run(): void { console.log('Task.run'); } } function runTask(t: Task) { t.run(); } runTask(n

如何将这种鸭子类型(Python)翻译成Java泛型?

通过示例考虑以下简单的Python函数: def quantize(data, nlevels, quantizer=lambda x, d: int(floor(x/d))): llim = min(data) delta = (max(data) - llim)/(nlevels - 1) # last level x == max(data) only y = type(data) if delta == 0: return y([0]

检查JavaScript中是否存在属性

我是JavaScript新手,对鸭子打字概念有点困惑.据我所知,我理解这个概念.但这导致了我思想中的奇怪后果.我将用以下示例解释: 我目前正在使用jQuery Mobile开发移动网络应用程序.有一次我捕获了画布的vmousedown事件.我对触摸的压力很感兴趣.我找到了Touch.webkitForce属性. $('#canv

除了动态类型,是什么让Ruby“比Java更灵活”?

我几乎一直在使用Java,因为它刚出现,但在过去的五年中已经被烧毁了,即使做最简单的事情也变得多么复杂.我开始在我的精神科医生的推荐下学习Ruby,呃,我的意思是我的同事(年轻,冷静的同事 – 他们使用Macs!).无论如何,他们不断重复的一件事是,Ruby是一种“灵活”的语言,而不是像Java

python – numpy.array()异常抛出(抱歉最初可怕的标题)

我正在学习Python和numpy,并且对于鸭子打字的想法不熟悉.我正在写一些函数,某些东西/某人应该通过一个numpy数组.试图接受鸭子打字,我正在编写我的代码,使用numpy.array和copy =和ndmin =选项将array_likes或1d / 0d数组转换为我需要的形状.具体来说,在我可以接受(p,p)数组或标量的

python – 鸭子打字:如何避免名字冲突?

我认为理解鸭子打字的想法,并希望在我的代码中更频繁地使用它.但是,我担心一个潜在的问题:名称冲突. 假设我想要一个对象做某事.我知道适当的方法,所以我只是调用它,看看会发生什么.一般来说,有三种可能的结果: >找不到该方法,并引发AttributeError异常.这表明该对象不是我认为的对象

如何用鸭子打字编写OOP一致代码?

我在确定方法在python程序中的位置时遇到了麻烦,似乎我习惯依赖的鸭子打字方法与我的OOP本能不一致. 为了说明,假设我们有三个类:Hero,Sword和Apple.英雄可以装备剑,英雄可以吃苹果. 如果我要遵循我的OOP直觉,我认为代码看起来像这样: duckless.py class Hero: def __init__(sel

算法 – Pythonic方法处理网络数据结构的方法

那么,关于什么是Pythonic的另一个问题!在这种情况下,应用程序域是网络算法(如节点,边缘,Dijkstra,那种东西……),我以前只用强类型语言编写的东西,我们可以非常确定一切是什么. 同时在Python中,我有一个类网;此类的单个实例表示网络.我有一个类Edge,它为网络中的每个边缘实例化.除其