标签: language-interoperability

统一多种语言的枚举

我有一个大型项目,其中包含多种语言的组件,每个组件都依赖于一些相同的枚举值.您提出了哪些解决方案来统一多种语言的枚举?我能想到一些,但我正在寻找最好的解决方案.

(在我的实现中,我使用的是Php,Java,Javascript和SQL.)

enums cross-language language-interoperability

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

关于使用F#创建可从C#使用的Matrix程序集

在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)

c# f# language-interoperability

5
推荐指数
1
解决办法
1541
查看次数

如何将数据从Perl传递到Java?

我正在进行一些Java < - > Perl交互.我想知道将信息从Perl传递到Java的最佳方法是什么.(关于Perl和Java的好答案在这里这里顺便说一下).

有很多文本和XML(XML :: Twig)我在Perl中解析,在一个我应该从Java Web App调用的脚本中.所以我收集了所有这些数据,我需要它在Java中的某些对象中使​​用它.

将信息从Perl发送到Java有什么好的策略?甚至可以将对象或其他兼容的数据结构从Perl返回到Java吗?

我想写一个文本文件并从Java中读取它会使使用Perl获得的所有优化变得毫无意义.

绩效是一个重要的问题.

编辑: 从我在这里看到的,也许Inline-Java将是一个不错的选择?

java perl language-interoperability

5
推荐指数
1
解决办法
4533
查看次数

在VB.NET中创建可以在C#中使用的索引器

我可以在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;

这就是我想要实现的目标.

.net c# vb.net indexer language-interoperability

5
推荐指数
2
解决办法
3040
查看次数

CORBA是一种语言吗?

据我所知,CORBA用于通过中间操作来维护分布式系统中的互操作性.

我想知道的是,CORBA是一种语言,它有自己的编码语法,或者我们使用其他语言如C#,Java等在CORBA 中编码.

我经历了这个问题,但没有找到直接答案.

corba language-interoperability

5
推荐指数
1
解决办法
857
查看次数

haskell scala互操作性

我是Scala的初学者,来自面向对象的范式.在理解Scala的函数编程部分时,我被引导到Haskell--纯函数式编程语言.

探索SO问答,我发现Java - Haskell具有互操作性.

我很想知道Scala-Haskell的互操作性是否同样存在?

可以在Scala应用程序中使用用Haskell编写的函数库吗?

根据Don Stewart给出的答案:这是可能的.

在Scala应用程序中集成Haskell函数库将是简单易行还是需要复杂的调整?

使用集成的Haskell函数库,Scala应用程序将在JVM上运行还是需要不同的安排?

haskell scala language-interoperability

5
推荐指数
1
解决办法
621
查看次数

GNU Fortran和C互操作性

我有一个大的,混合的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个这样的功能,这似乎是不可行的工作量.所以,我的问题是:如何在不改变函数调用语义的情况下解决链接错误,并且不使用英特尔编译器破坏现有构建?

c c++ fortran language-interoperability gfortran

5
推荐指数
1
解决办法
563
查看次数

如何让Objective-C类符合Swift的`Equatable`协议?

我有一个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.但这很难看.令人沮丧.

protocols objective-c language-interoperability swift

5
推荐指数
1
解决办法
2800
查看次数

在Windows UWP应用程序中使用Python和C#

我开始用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应用程序中.

c# python ironpython language-interoperability uwp

5
推荐指数
1
解决办法
3209
查看次数

通过 Java 反射查找 Scala 类型的伴生对象的可靠方法是什么?

我正在编写 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)来发现伴随实例。

java reflection scala language-interoperability

5
推荐指数
1
解决办法
960
查看次数