在本周几种脚本语言之间来回切换之后,我发现自己在想它们的相似之处.然而,我总是想要谷歌(或现在的SO)来记住细节,例如"instanceof"和"endswith"的本地等价物,或者声明界面的正确语法,或者其他什么.
这让我想起了(人类)语言Europonto.只需选择一些模糊的英语语法和一些模糊的浪漫/日耳曼/斯拉夫语词汇,这一切都很好!
那么如果我们尝试用脚本语言做同样的事情会发生什么.对于今天的Python风格的缩进块感觉如何?精细!想要使用原型对象?好!只记得如何拼写某些库函数的PHP名称?没问题!
无论如何,这是疯狂而疯狂的想法.既然我们需要一个承认具体答案的问题,那就让我们这样收紧:
在创建允许[Python,Ruby,PHP,Perl,shell和JavaScript]的所有本机语法和库函数的脚本语言中,最重要的冲突是什么,这样您就可以在语言之间自由地混合代码块和函数名称?
让我们说任何特定的结构应该在声明级别上保持一致.所以我们允许:
foreach( $foo as $bar )
{
if $foo == 2:
print "hi"
}
Run Code Online (Sandbox Code Playgroud)
但不是,比方说,
foreach( $foo as $bar )
{
if $foo == 2:
print "hi"
endif
end
Run Code Online (Sandbox Code Playgroud)
冲突可能包括:解析器含糊不清; 名字碰撞; 对象或函数或闭包的冲突语义; 我猜这个范围将是一个巨大的问题,但你告诉我.
我将从一开始就将其作为"社区维基"开始,所以如果您认为这是一个有趣的问题但想要使其更加严谨,请随时编辑.
我正在用这样的行更新一些旧的Managed C++代码:
instanceOfEventSource->add_OnMyEvent(
new EventSource::MyEventHandlerDelegate(this, MyEventHandlerMethod) );
Run Code Online (Sandbox Code Playgroud)
哪里
C++/CLI中的正确语法是什么?
在WinForms UserControl中,我会通过从任何控件的方法调用this.BeginInvoke()将数据传递给主GUI线程.什么是Silverlight UserControl中的等价物?
换句话说,我如何获取任意工作线程提供的数据并确保它在主显示线程上得到处理?
任何人都可以在Mathematica 笔记本中推荐单元测试代码的模式吗?我熟悉Wolfram Workbench中的单元测试基础架构,但我也希望有一个好的方法可以在常规GUI中的简单笔记本中使用.
我一直在使用一个简单的"期望"功能,如下所示.但问题是我必须重新评估笔记本并在视觉上扫描它以查找故障.什么是创建测试列表的好方法,或者交替扫描笔记本并生成这样的列表,这样它们都可以在一次调用中进行评估?
In[8]:= Expect[ description_, val_, expr_ ] :=
If[
val == expr,
"ok",
StringJoin[ "ERROR: GOT UNEXPECTED VALUE ", ToString[expr],
" INSTEAD OF ", ToString[val] ]
]
In[9]:= Expect[ "test passes", True, True ]
Out[9]= "ok"
In[10]:= Expect[ "test fails", True, False ]
Out[10]= "ERROR: GOT UNEXPECTED VALUE False INSTEAD OF True"
Run Code Online (Sandbox Code Playgroud) 我有一个使用一些 API 调用的 .NET 应用程序,例如GetPrivateProfileString。到目前为止,它一直在 32 位机器上运行。
为了在 64 位机器上运行,我是否必须将“平台目标”更改为“x86”?或者有没有办法让运行时知道根据运行时环境调用哪个 API DLL?
假设我有:
class Foo {
public int Bar { get; set; }
}
public void SetThree( Foo x )
{
Action<Foo, int> fnSet = (xx, val) => { xx.Bar = val; };
fnSet(x, 3);
}
Run Code Online (Sandbox Code Playgroud)
如何使用表达式树重写fnSet的定义,例如:
public void SetThree( Foo x )
{
var assign = *** WHAT GOES HERE? ***
Action<foo,int> fnSet = assign.Compile();
fnSet(x, 3);
}
Run Code Online (Sandbox Code Playgroud) (参考这个答案 :)
当我使用URLRequest进行POST时,它是否自动包含来自托管Flash的浏览器会话中的cookie?如果没有,我怎么能把它包括在内,或者如果需要的话,检索它们并自己包含它们?
如果我为表启用更改数据捕获,然后其他人向表中添加一列,我的捕获会受到影响吗?我仍然可以获得原始专栏的更新吗?对于新专栏?
如果删除一列怎么办?
在这两个教程示例中,为什么带有指针接收器的方法在一种情况下满足接口而在另一种情况下不满足?
在示例#55中,类Vertex不满足Abser接口,因为方法Abs仅定义为*Vertex而不是Vertex:
type Abser interface {
Abs() float64
}
type Vertex struct {
X, Y float64
}
func (v *Vertex) Abs() float64 {
return math.Sqrt(v.X*v.X + v.Y*v.Y)
}
Run Code Online (Sandbox Code Playgroud)
错误消息是:
prog.go:22: cannot use v (type Vertex) as type Abser in assignment:
Vertex does not implement Abser (Abs method has pointer receiver)
Run Code Online (Sandbox Code Playgroud)
但是在示例#57中,即使定义了以下内容,该类也MyError满足error接口ok :Error()*MyErrorMyError
type error interface {
Error() string
} …Run Code Online (Sandbox Code Playgroud) .net ×2
silverlight ×2
.net-4.0 ×1
c# ×1
c++-cli ×1
cookies ×1
flash ×1
go ×1
linq ×1
managed-c++ ×1
pinvoke ×1
scripting ×1
unit-testing ×1
urlrequest ×1