我是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)
答案 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
就在那里,因为StringReader
是IDisposable
并使用use
F#会在您退出范围时处置该对象。
PS:tagTexrFromReader
是一个错字吗?