我有一个大型项目,其中包含多种语言的组件,每个组件都依赖于一些相同的枚举值.您提出了哪些解决方案来统一多种语言的枚举?我能想到一些,但我正在寻找最好的解决方案.
(在我的实现中,我使用的是Php,Java,Javascript和SQL.)
在C#中没有内置矩阵函数,但在F#powerpack中有.
我不知道在F#中使用第三方或开源C#库,而是将有用位暴露给C#.
想知道是否有人已经想过这个,或者尝试过,以及这是不是一个好主意.
我应该将它作为一个类或一堆静态函数公开吗?
或者我应该创建一个C#包装类,并将该调用转到F#?或者让F#使用C#类作为输入和输出?
有什么想法吗?
回答下面的Hath:您可以直接在C#中使用F#库(运算符也是如此!):
using System;
using System.Text;
using Microsoft.FSharp.Math;
namespace CSharp
{
class Program
{
static void Main(string[] args)
{
double[,] x = { { 1.0, 2.0 }, { 4.0, 5.0 } };
double[,] y = { { 1.0, 2.0 }, { 7.0, 8.0 } };
Matrix<double> m1 = MatrixModule.of_array2(x);
Matrix<double> m2 = MatrixModule.of_array2(y);
var mp = m1 * m2;
var output = mp.ToArray2();
Console.WriteLine(output.StringIt());
Console.ReadKey();
}
}
public static class Extensions
{
public …Run Code Online (Sandbox Code Playgroud) 我正在进行一些Java < - > Perl交互.我想知道将信息从Perl传递到Java的最佳方法是什么.(关于Perl和Java的好答案在这里和这里顺便说一下).
有很多文本和XML(XML :: Twig)我在Perl中解析,在一个我应该从Java Web App调用的脚本中.所以我收集了所有这些数据,我需要它在Java中的某些对象中使用它.
将信息从Perl发送到Java有什么好的策略?甚至可以将对象或其他兼容的数据结构从Perl返回到Java吗?
我想写一个文本文件并从Java中读取它会使使用Perl获得的所有优化变得毫无意义.
绩效是一个重要的问题.
编辑: 从我在这里看到的,也许Inline-Java将是一个不错的选择?
我可以在VB.NET中创建一个可以在C#中使用的类:
myObject.Objects[index].Prop = 1234;
Run Code Online (Sandbox Code Playgroud)
当然我可以创建一个返回数组的属性.但要求是索引是从1开始的,而不是从0开始的,所以这个方法必须以某种方式映射索引:
我试图这样做,但C#告诉我,我不能直接调用它:
Public ReadOnly Property Objects(ByVal index As Integer) As ObjectData
Get
If (index = 0) Then
Throw New ArgumentOutOfRangeException()
End If
Return parrObjectData(index)
End Get
End Property
Run Code Online (Sandbox Code Playgroud)
编辑 对不起,如果我有点不清楚:
C#只允许我调用这个方法
myObject.get_Objects(index).Prop = 1234
但不是
myObject.Objects[index].Prop = 1234;
这就是我想要实现的目标.
据我所知,CORBA用于通过中间操作来维护分布式系统中的互操作性.
我想知道的是,CORBA是一种语言,它有自己的编码语法,或者我们使用其他语言如C#,Java等在CORBA 中编码.
我经历了这个问题,但没有找到直接答案.
我是Scala的初学者,来自面向对象的范式.在理解Scala的函数编程部分时,我被引导到Haskell--纯函数式编程语言.
探索SO问答,我发现Java - Haskell具有互操作性.
我很想知道Scala-Haskell的互操作性是否同样存在?
可以在Scala应用程序中使用用Haskell编写的函数库吗?
根据Don Stewart给出的答案:这是可能的.
在Scala应用程序中集成Haskell函数库将是简单易行还是需要复杂的调整?
使用集成的Haskell函数库,Scala应用程序将在JVM上运行还是需要不同的安排?
我有一个大的,混合的C/Fortran代码库,目前使用Windows上的英特尔工具编译.我被要求将它移植到Linux上的GNU工具.或多或少随机,我选择了4.8版本.
从Fortran调用C函数时,互操作性通常如下所示:
// C code:
void PRINTSTR(char *str, size_t len) {
for(int ii = 0; ii < len; ii++) {
putchar(str[ii]);
}
putchar('\n');
}
!Fortran code:
program test
implicit none
call printstr("Hello, world.")
end
Run Code Online (Sandbox Code Playgroud)
英特尔Fortran编译器始终生成大写符号,因此可以正常工作.但GNU Fortran编译器总是生成小写符号,因此存在链接器错误.
GNU Fortran编译器曾经有一个叫做-fcase-upper生成大写符号的选项,但是看起来它太可配置了,每个人的好处都被删除了(我不确定什么时候).
可以使用该ISO_C_BINDING工具强制编译器生成区分大小写的名称:
program test
interface
subroutine printstr(str) bind(C, name='PRINTSTR')
character :: str(*)
end subroutine
end interface
call printstr("Hello, world.")
end
Run Code Online (Sandbox Code Playgroud)
这解决了链接器错误,但它改变了字符串参数的处理方式; 不再提供length参数.因此,要使用此方法,我不仅必须为当前以这种方式工作的每个函数添加接口定义,而且还必须在每次调用此类函数时更改字符串的处理方式,确保所有字符串是以null结尾的.
我可以通过小写来完成所有这些函数,但当然英特尔编译器仍会生成大写符号,这样就会破坏现有的构建.
由于有大约2,000个这样的功能,这似乎是不可行的工作量.所以,我的问题是:如何在不改变函数调用语义的情况下解决链接错误,并且不使用英特尔编译器破坏现有构建?
我有一个Objective-C类(恰好是一个按钮,但这并不重要),在我的(混合语言)项目的另一部分,我有一个这些按钮的数组,我想得到索引使用该find()方法的按钮.像这样:
func doSomethingWithThisButtonIndex(index:Int)
{
let buttons = [firstButton, secondButton, thirdButton]
if index == find(buttons, firstButton)
{
// we've selected the first button
}
}
Run Code Online (Sandbox Code Playgroud)
但是我得到了
类型'ImplicitlyUnwrappedOptional'不符合协议等价
好的,让我们转到Objective-C并使用ButtonThing工具<Equatable>.但它不承认这一点.
那我该怎么办?现在我正在围绕它构建,迫使阵列成为NSArray并使用indexOfObject.但这很难看.令人沮丧.
我开始用Python编写应用程序,但我现在想切换到C#和UWP.我知道你不能用Python编写UWP应用程序,但我试图看看我是否可以用Python编写一些代码并从C#访问该代码.
例如,在Python中编写一个C#代码也可以访问的类.那可能吗?如果是这样,Python可以访问微软的UWP API吗?
主代码不会用Python编写; 那是不可能的.但是,C#和Python之间是否存在互操作性,可能还有IronPython(.NET的Python)?
我将如何设置这样的Visual Studio项目?我安装了Visual Studio for Python Studio,但没有内置选项将Python文件添加到我的UWP应用程序中.
我正在编写 Java(不是 Scala)代码,其中有一个 JavaClass参考,引用了 Scala 类型T:
trait T {}
Run Code Online (Sandbox Code Playgroud)
我现在想仅使用 Java 反射来发现 JavaClass引用和对应的单例实例object T,然后调用该伴生对象中的方法。
object T {
def someMethod : String = "abc";
}
Run Code Online (Sandbox Code Playgroud)
我对生成的 Scala 代码进行了逆向工程,编写了以下 Java 代码:
Class<?> traitClass = ...;
Class<?> companionClass = Class.forName(traitClass.getName() + "$");
Field module = companionClass.getField("MODULE$");
Object companion = module.get(companionClass);
String abc = (String) companionClass.getMethod("someMethod").invoke(companion);
Run Code Online (Sandbox Code Playgroud)
这看起来不太健壮——未来的 Scala 编译器可能随时改变。有没有更稳健的方法?我也愿意调用 Scala API(从 Java)来发现伴随实例。