标签: dynamic-languages

如何确保重构后代码仍然有效(动态语言)

如何确保重构后代码仍然有效(即变量名称更改后)?

在静态语言中,如果一个类被重命名但其他引用类不是,那么我将得到一个编译错误.

但是在动态语言中没有这样的安全网,如果你不够小心,你的代码可能会在重构期间中断.您可以使用单元测试,但是当您使用模拟时,很难知道名称的变化,因此,它可能没有帮助.

如何解决这个问题呢?

php python dynamic-languages

7
推荐指数
2
解决办法
393
查看次数

CouchDB最适合动态语言吗?

我熟悉CouchDB以及将其结果映射到Scala对象的想法,以及找到一些自然的方法来迭代它,立即出现.

但我发现使用CouchDB的json/document-centric/shchema-free方法,Ruby和Javascript等动态语言做得非常好.

用静态语言用Couch做任何事情的好方法吗?

json couchdb scala dynamic-languages

7
推荐指数
1
解决办法
1737
查看次数

如何通过堆栈跟踪访问本地?(模仿动态范围)

背景

即使可以在运行时编译C#代码,也不可能在当前范围中包含和运行生成的代码.相反,所有变量都必须作为显式参数传递.

与像Python这样的动态编程语言相比,人们永远无法真正复制完整的行为eval(如本例所示).

x = 42
print(eval("x + 1")) # Prints 43
Run Code Online (Sandbox Code Playgroud)

这个问题

所以我的问题是(无论它是否真的有用;))是否可以通过使用反射来模拟.NET中的动态范围.

由于.NET为我们提供了Diagnostics.StackTrace允许我们检查调用方法的类,因此这个问题归结为以下内容:( 如何)可以可靠地访问调用方法的本地

堆栈跟踪是否为我们提供了足够的信息来计算内存偏移量,或者托管代码中是否禁止这样做?

这样的代码是否有可能?

void Foo() {
   int x = 42;
   Console.WriteLine(Bar());
}

int Bar() {
   return (int)(DynamicScope.Resolve("x")); // Will access Foo's x = 42
}
Run Code Online (Sandbox Code Playgroud)

.net c# scope dynamic-languages

7
推荐指数
2
解决办法
472
查看次数

动态语言界面?

接口(或所有方法抽象的抽象类)是静态类型语言(如C#,JAVA)中的强大武器.它允许以统一的方式使用不同的派生类型.设计模式鼓励我们尽可能地使用界面.

但是,在动态类型语言中,在编译时不会检查所有对象的类型.它们不必实现以特定方式使用的接口.您只需要确保它们定义了一些方法(属性).这使得接口不是必需的,或者至少不像在静态语言中那样有用.

典型的动态语言(例如ruby)是否具有接口?如果确实如此,那么拥有它有什么好处?如果没有,那么我们是否会失去许多需要界面的漂亮设计模式?

谢谢.

dynamic-languages interface

7
推荐指数
1
解决办法
1117
查看次数

在什么情况下动态语言不合适?

哪些因素表明项目的解决方案不应该用动态语言编码?

dynamic-languages

6
推荐指数
1
解决办法
587
查看次数

使用动态类型在C#4.0中重载分辨率

我还没有访问C#4.0预览版.但我很好奇,在下面的例子中调用重载方法时C#4.0运行时会做什么.它是否解决了泛型过载......或专门的过载问题.

public class Foo<T>
{
  protected string BarImpl( T value ) { return "Bar(T) says: " + value.ToString(); }

  protected string BarImpl( int value ) { return "Bar(int) says: " + value.ToString(); }

  public string Bar( T value )
  {
    dynamic foo = this;
    return foo.BarImpl( value );
  }
}

public static void Main( string args[] )
{
  var f = new Foo<int>();

  Console.WriteLine( f.Bar( 0 ) );
}
Run Code Online (Sandbox Code Playgroud)

c# overloading dynamic-language-runtime dynamic-languages c#-4.0

6
推荐指数
1
解决办法
2170
查看次数

以编程方式添加属性执行ActionScript对象(元编程)

我有一个AS3对象:{p1:"..",p2:".."}我想创建另一个对象,该对象包含一个属性的第一个对象,该属性的名称由变量定义:

var propertyName:String = "myName";
var myObj = new Object();
myObj.something_that_creates_a_property_named_as_propertyName({p1:"..", p2:".."})
Run Code Online (Sandbox Code Playgroud)

它有意义吗?

dynamic-languages actionscript-3

6
推荐指数
1
解决办法
7172
查看次数

为什么动态语言的"动态"部分如此之好?

Jon Skeet发布了这篇博文,其中他声称他将会问为什么语言的动态部分如此优秀.所以我以为我先发制人地问他:是什么让他们这么好?

dynamic-languages

6
推荐指数
2
解决办法
583
查看次数

动态语言中的领域驱动设计工作?

您是否了解动态语言中的任何DDD工作?

当偏离面向企业的解决方案(谷歌搜索,包括C#,.NET,ASP和Java产生的结果少10倍)时,DDD的实用资源往往会大幅减少,但我实际上找不到DDD实现的单一示例用动态语言......

domain-driven-design dynamic-languages

6
推荐指数
2
解决办法
1525
查看次数

从静态lang(java/c#)移动到像python这样的动态语言的人最常见的问题

对于从静态语言(java/c#)移动到动态语言(如python)的人来说,最重要的是什么?

如何完成任务似乎很酷,但重命名方法,或添加/删除参数似乎有风险!

是为每种方法编写测试的唯一解决方案吗?

python java dynamic-languages

6
推荐指数
1
解决办法
230
查看次数