问题标签 [dynamic-language-runtime]
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# - 编译嵌套的相互递归函数
我正在创建一种玩具动态语言(偏向于 javascript),虽然我的实现是在 DLR 之上,但我认为这个问题的解决方案与语言/平台无关。
我对编译递归函数或彼此相邻的相互递归函数没有问题。但是编译嵌套的相互递归函数要困难得多。
我用来测试的示例函数如下
我认为解决这个问题的解决方案必须非常通用(也许我错了)而不是特定于 DLR,我假设我必须以某种方式解除g的内部定义并在f之前定义它并仍然保持关闭语境。
.net - .NET 4.0 DLR 支持的动态语言
你知道 .NET 4.0 DLR 支持的动态语言列表吗?
我知道 IronRuby、IronPython 都受支持。不确定 IronScheme 是否是。F#?还有什么?
谢谢!
c# - DynamicObject 隐式转换
我有一个 DynamicObject 的子类,我想为原始类型实现隐式转换,类似于 DO 的显式转换方法 TryConvert;也就是说,无需编写多个隐式运算符 [type] 函数。
用法:
这可能吗?如果可以,怎么做?
reflection - 将成员动态添加到动态对象
我正在寻找一种将成员动态添加到动态对象的方法。好的,我想需要澄清一下...
当你这样做时:
该Bar
属性将在运行时动态添加。但是代码仍然“静态地”引用 Bar(名称“Bar”是硬编码的)......如果我想在运行时添加一个属性而不知道它在编译时的名称怎么办?
我知道如何使用类的方法来使用自定义动态对象(实际上几个月前我在博客上写过DynamicObject
) ,但是如何使用任何动态对象来做到这一点?
我可能可以使用该IDynamicMetaObjectProvider
界面,但我不明白如何使用它。例如,我应该将什么参数传递给GetMetaObject
方法?(它期望一个Expression
)
顺便说一句,你如何对动态对象进行反射?“常规”反射并且TypeDescriptor
不显示动态成员......
任何见解将不胜感激!
c# - 如何在 C# 中声明一个 byte[] 以便 Ironpython 将其解释为 byte[] 而不是元组
在 C++/CLI 中,我们有一个函数返回:
IronPython 将其视为byte[]
.
在 C# 中,我们有一个返回以下内容的函数:
虽然 C# 客户端将 Outbuffer 视为byte[]
,但 IronPython 将其视为包含多个数组的元组。
我们如何使 IronPython 与OutBuffer
一个byte[]
而不是一个元组相关联?
为什么 C# 和 C++/CLI 之间存在差异?
编辑:这个问题已提出并显然已解决,但未提供答案。这可以纠正吗?
c# - C# 代替 IronRuby 作为 .NET 3.5 中的嵌入式“脚本”语言
将 C# 用作 .NET 3.5 应用程序的嵌入式内部脚本应用程序的最佳实践是什么?我有一个应用程序,里面有一些小的 IronRuby 脚本。这些都没有真正利用 IronRuby 的动态特性。
显然,现在使用 IronRuby 或 IronPython 违反了我们的公司标准。哎呀。我可以使用 C# 作为脚本语言的最佳方式是什么?
我喜欢 IronRuby 的一件事是我可以在应用程序运行时进行一些小的更改,然后重新运行脚本。有什么办法可以在 C# 中做到这一点?还是必须不断重启应用程序?
c# - C# 3.5 DLR 表达式.动态问题
我继承了一种小型脚本语言,我正在尝试将其移植到 DLR,以便更易于管理。到目前为止,它已经相当直截了当。尽管尝试动态调用变量的成员,但我遇到了问题。当前的语言在 .NET 上运行并使用解析循环和反射来执行此操作,但我希望能够摆脱这种情况。以下是脚本语言的示例:
$systen1RemoteURI、$minBad 和 $minGood 是与 $dbconnection 一起在脚本中设置的变量。但是 $dbconnection 将从传入的名为 $config 的变量中获取其值。这 4 个变量需要对调用者可用,因此它们被传递到 lambda,最初为 null。这是生成的 Lambda IL(调试视图):
我想弄清楚的是如何使用 Expression.Dynamic 发出 $config.GetDBConnection("somedb")。通过查看 Sympl 库中的示例,我相信发出的 IL 应该如下所示:.Dynamic Call GetdbConnection($config, "somedb") 但我无法弄清楚如何从 Expression.Dynamic 中实际发出它。
它似乎想要一个我无法正确创建的 CallSiteBinder,而且我不明白 Expression.Dynamic 的参数顺序是什么,因为它似乎只想要调用“成员”,而不是基础。
我不知道 $config 的运行时类型,它只是一个实现名为 GetDBConnection(string) 的函数的对象。这不是由接口或基类提供的。
任何帮助,将不胜感激。
.net - IronPython 将 .Net 类型暴露给运行时引擎
我希望向 IronPython 运行时公开特定的 .Net 类型。我可以做这个:
但这会将所有类型暴露给运行时。可以选择类型加载吗?
.net - 您如何判断您的 C# 程序集是否是从 ScriptingRuntime 调用的?
假设我用一个类构建了一个程序集:
然后,从 ipy.exe:
如何判断我的 Bar 方法是否在 ScriptingRuntime 中运行?是否可以向该运行时发出回调(重新进入)?
.net - IronRuby System.DateTime NilClass
Why comparing to null is so unstable?
Just code.
In 9.1 this code works as expected.
EDIT:
workaround: