如何传递F#字符串并在c#中返回结果

时间:2014-08-01 07:59:57

标签: f#

我是SQL开发人员,对F#和C#都是新手。我需要有关如何将字符串传递给f#函数以及将结果从F#返回到C#的帮助。

项目描述: 我正在使用stanford postagger用词性标记句子。 从我复制此代码的参考链接。 (http://sergey-tihon.github.io/Stanford.NLP.NET/StanfordPOSTagger.html

module File1


open java.io
open java.util
open edu.stanford.nlp.ling
open edu.stanford.nlp.tagger.maxent

// Path to the folder with models

let modelsDirectry = 
__SOURCE_DIRECTORY__  + @'..\stanford-postagger-2013-06-20\models\'

// Loading POS Tagger

let tagger = MaxentTagger(modelsDirectry + 'wsj-0-18-bidirectional-nodistsim.tagger')

let tagTexrFromReader (reader:Reader) = 
let sentances = MaxentTagger.tokenizeText(reader).toArray()

sentances |> Seq.iter (fun sentence ->
    let taggedSentence = tagger.tagSentence(sentence :?> ArrayList)
    printfn "%O" (Sentence.listToString(taggedSentence, false))
)


// Text for tagging

let text = System.Console.ReadLine();

tagTexrFromReader <| new StringReader(text)

1 个答案:

答案 0 :(得分:0)

如果C#或F# - 做一个获得string并返回...的函数,那就没关系了 s说int,你只需要这样的东西(把它放在MyModule.fs中):

namespace MyNamespace

module MyModule =

   // this is your function with one argument (a string named input) and result of int
   let myFun (input : string) : int =
      // do whatever you have to
      5 // the value of the last line will be your result - in this case a integer 5

使用

从C#/ .net中调用它
int result = MyNamespace.MyModule.myFun ("Hallo");

我希望这能帮到你一点

对于示例,这将是:

let myFun (text : string) =
   use reader = new StringReader(text)
   tagTexrFromReader reader

你可以在File1模块中使用var res = Fiel1.myFun(text);

来调用它

顺便说一句:use就在那里,因为StringReaderIDisposable并使用use F#会在您退出范围时处置该对象。

PS:tagTexrFromReader是一个错字吗?