问题标签 [dynamic-languages]
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.
programming-languages - 您可以在哪些语言中动态地重写函数?
我最近有必要在 javascript 中动态地重写一个 javascript 函数。我做这件事的轻松程度,以及它的乐趣,让我感到震惊。
在这里,我有一些 HTML:
而且我无法更改输出的 HTML,但我需要向该链接添加一个额外的参数。我开始考虑它,并意识到我可以这样做:
它就像一个冠军!excelExport.onclick 返回一个函数对象,我将其转换为字符串,并对其进行一些字符串操作。由于它现在是“function() { ... }”的形式,我只是返回并将其分配给 dom 对象的 onclick 事件。不得不使用 eval 有点难看,但是 AFAIK 没有一个 javascript 函数构造函数可以接受一串代码并将其很好地转换为对象。
无论如何,我的意思不是我超级聪明(我不是),我的意思是这很酷。而且我知道 javascript 不是唯一可以做到这一点的语言。我听说 lisp 多年来一直为此目的使用宏。除了真正的 grok 宏,你需要真正 grok lisp,我不 grok 它,我只是'有点明白'。
所以我的问题是:你可以(轻松地)用哪些其他语言动态重写函数,你能给我看一个简单的例子吗? 我想看看你还能在哪里做到这一点,以及它是如何做到的!
(另外,我不知道要标记什么,所以我随机猜测)
web-services - 声明式 Web 服务授权和 WSDL 类型
我们目前有一组 Web 服务,将接口暴露给各种不同的客户端类型和角色。
背景:
Web 服务应用程序代码是(并将保留)用弱类型动态语言编写的。
身份验证是单独处理的,这篇文章是关于Authorization的。
Web 服务公开的所有操作都是无状态的。
Web 服务同时使用SOAP 和 REST(JSON)。
我绝对没有兴趣开始讨论这两种方法的优点。
问题:
我想实现一个同时以声明方式定义的方案
- 公开方法的输入和输出的复杂 WSDL 类型化,以及
- 需要授权 TRAITS 和/或角色来使用公开的方法。
我想让声明与接口定义(比如方法属性)内联,或者在外部定义(比如通过 YAML 文件),但不在数据库中动态管理。
(任何)弱类型动态语言是否已经存在任何这样的实现?我们可以构建完全外部的实现吗?
python - 调试 Ruby/Python/Groovy
我重新表述这个问题,因为它要么太无趣,要么太难以理解。:)
最初的问题是因为我正在从 Java 转换到 Groovy,但是当转换到任何高级语言(Ruby、Python、Groovy)时,该示例同样适用。
Java 很容易调试,因为代码行和相当细粒度的行为之间存在清晰的关系,例如使用 for 循环操作数组:
所以你可以在循环中的测试上设置一个断点,看看接下来会发生什么。(我知道有更好的方法来写这个;这只是为了说明这一点。)
在像 Ruby 这样的语言中,惯用风格似乎有利于更高级别的单行编码,例如来自http://rubyquiz.com/quiz113.html
我想知道您是否可以提出任何有效的调试技术,例如,如果您更改了正则表达式......您是否仍会使用传统的调试器,并进入/跳过链式方法?或者,还有更好的方法?
谢谢!
dynamic-languages - 鸭子打字——当你需要一个具体的类型时怎么办?
假设您正在使用动态语言(Python 等)进行计算器,并且您有一个 add 方法。
现在,如果您要传入除错误数字之外的任何内容,那么您需要进行一些数据类型检查。
Duck Typing 是关于对象而不是上面例子中的参数吗?
谁能进一步解释?
编辑
我的意思是:
不关心传递给方法的内容。
actionscript-3 - 以编程方式添加属性 do ActionScript Object(元编程)
我有一个 AS3 对象:{p1:"..", p2:".."} 我想创建另一个对象,该对象包含名称由变量定义的属性中的第一个对象:
这有什么意义吗?
perl - Perl 可以“静态”解析吗?
一篇名为“Perl 无法解析,正式证明”的文章正在流传。那么,Perl 是在“运行时”还是“编译时”决定其解析代码的含义?
在我读过的一些讨论中,我觉得这些论点源于不精确的术语,所以请尝试在你的答案中定义你的技术术语。我故意不定义“运行时”、“静态”或“解析”,以便我可以从可能与我不同定义这些术语的人那里获得观点。
编辑:
这与静态分析无关。这是一个关于 Perl 行为的理论问题。
dynamic-languages - 脚本编写者是否必须考虑舍入误差?
我正在学习 C,并且出现了保护数字和舍入错误的想法。脚本语言的从业者(我在这里想到的是 Python 和 Perl)需要担心这些东西吗?如果他们在做科学编程怎么办?
javascript - JavaScript 中的接口是必需的吗?
我想这可能适用于任何动态语言,但我使用的是 JavaScript。我们有这样一种情况,我们正在用 JavaScript 编写几个控件,这些控件需要公开一个 Send() 函数,然后由托管 JavaScript 的页面调用该函数。我们有一个定义了这个 Send 函数的对象数组,因此我们遍历集合并在每个对象上调用 Send()。
在 OO 语言中,如果您想做类似的事情,您将拥有一个 IControl 接口,该接口具有必须由每个控件实现的 Send() 函数,然后您将拥有一组您将迭代的 IControl 实现通过并调用发送方法。
我的问题是,由于 JavaScript 是一种动态语言,是否需要定义控件应继承的接口,或者仅调用控件上公开的 Send() 函数是否足够好?
parameters - 您如何有效地对动态语言的参数进行单元测试?
这个答案让我很生气,因为我从来没有理解过如何处理动态语言中的参数类型与来自 Java 的静态语言(我的观点被告知或变形 - 如你所愿)。
给定一个采用动态语言参数 bar 的方法 foo,在编译时不强制执行 bar 的类型。上面链接的答案(以及我通常看到的答案)是您需要使用动态语言正确进行单元测试。
但在某些时候,单元外的某些东西会调用该方法。假设这是一个重量级的对象,将在任何使用它的类的单元测试中被模拟。现在你有很多类调用这个方法,你需要改变类型。为简单起见,它曾经接受一个数字,但现在需要一个字母数字,并且您需要使用专门用于字符串而不是具有新要求的数字对象的方法。
您如何更改它并知道调用代码将被修复?当然,如果您只是更改它,您的单元测试将失败,但由于您需要故意更改它,因此您表面上会修复您的单元测试。你怎么知道修复调用代码?我的意思不仅仅是概念上你知道多少,我的意思是你怎么知道你已经找到了所有的调用者并且真的可以说它已经改变了。
似乎只有非常全面的集成测试才能为您提供保证。我错过了什么吗?
objective-c - 使用 -performSelector:与仅调用方法
我对 Objective-C 还是有点陌生,我想知道以下两个语句之间有什么区别?