问题标签 [duck-typing]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 如何在 IEnumerable 上创建动态选择在运行时?
鉴于我有一个IEnumerable<T>
,T
任何对象在哪里,我如何从中选择一个特定的属性,因为我在运行时知道其中一个属性名称的名称作为字符串?
例如:
本质上,我显然只是在做externalIEnumerable.Select(x=> x.Foo);
,但我需要Select
在运行时执行此操作,此时我无法控制它最初创建的时间。
--
回答:根据 AlanT 的回答,这就是我实际所做的:
我将它保留为表达式,因为调用Compile
导致 IQueryable 被枚举,这意味着数据库被不必要地命中。因此,要使用它,我只需执行以下操作:
c# - 如何在 IEnumerable 上创建动态多属性选择在运行时?
我昨天问了一个非常相似的问题,但直到今天我才意识到我接受的答案并不能解决我所有的问题。我有以下代码:
使用如下:
这使我可以从IQueryable<TUnknown>
. 问题是此代码仅适用于单个主键,我需要添加对多个 PK 的支持。
那么,有什么方法可以调整SelectExpression
上面的方法来获取IEnumerable<string>
(这是我的主键属性名称列表)并让该方法返回一个选择这些键的表达式?
即鉴于以下情况:
我的 Select 需要执行以下操作(在运行时):
delphi - 鸭子在 Delphi 2007 中打字?
问题:
有没有办法用 Delphi 2007 做鸭子打字(即没有泛型和高级 Rtti 功能)?
Delphi 2010 以后的鸭子打字资源:
最后编辑:
我已经深入研究了上面列出的资源,并在这里研究了每个发布的答案。
我最终完善了我的要求,并对这个问题进行了跟进。
python - 如何使用元组作为 __getitem__() 的参数?
我正在编写一个包装字典的自定义类。因此,我想为它实现getitem。我也将使用元组作为这个字典中的键。但是,当我尝试将元组传递给 getitem 时,Python 会抛出 KeyError。当我将元组传递给getitem时,它看起来像是将我的元组转换为一个 int :
代码:
输出:
Board 是否需要继承映射类型才能让 Python 满意?另外,为什么 Python 一开始就尝试这样做?
scala - 我如何将类型扩展到scala中的特征
我有一种用于鸭式打字的类型:
我想编写一个强制接口类型的特征,但这不起作用:
另一方面:如果我写一个 trait t1 而不是 type t 那么我就失去了鸭式打字功能:
那么我怎样才能同时使用鸭式打字和接口呢?
ruby - Ruby 程序员如何进行类型检查?
由于 ruby 中没有类型,Ruby 程序员如何确保函数接收正确的参数?现在,我在到处重复if object.kind_of
/语句来检查和引发运行时错误,这很丑陋。instance_of
必须有更好的方法来做到这一点。
python - 如果在 Python 中进行鸭式打字,你应该测试 isinstance 吗?
你有一个 Python 类,它需要一个 equals 测试。Python 应该使用鸭子类型,但是在eq函数中包含或排除 isinstance 测试是否(更好/更准确) ?例如:
c - 在普通 C 中应用鸭子类型
在我的开源纯 C 代码中,我使用这个简单的结构从字符串缓冲区读取和解析数据:
使用这个简单的 API访问缓冲区:
注意:可以在不破坏当前实现的情况下ltsLS_unread
替换为。return (ltsLS_good(ls)) ? SIZE_MAX : 0
此代码用于从字符串缓冲区以自定义格式加载一些数据。(这可能是一个更好的说明。)
现在我需要不是从字符串缓冲区加载数据,而是从FILE
指针加载数据。
我不想复制粘贴实现,而是想重用现有代码。(当然,我可以重构/调整它。)
这是 C++ 中的教科书内容,但是如何在纯 C 中做到这一点而不会产生运行时开销?
这是一个使用lts_LoadState
API 且不可复制粘贴的示例函数(当然,可以更改以同时支持字符串缓冲区和FILE *
):
django - Django:鸭子打字友好的接受记录或记录的输入方式
我有这样的功能:
现在bar
可以是 Django 记录,也可以是指向记录的 slug。我需要这种灵活性,以便当我手头有实际记录时可以调用这个函数,或者从一个更通用的函数调用这个函数,该函数只有 bar 作为字符串可用(从数据库中提取)。
我意识到我可以做类似的事情:
但这似乎一点也不优雅。
如果可以的话,我想避免使用 isinstance。