Использование атрибутов сборки в F # - PullRequest
10 голосов
/ 16 февраля 2010

Я пытаюсь перевести следующий пример C #, который создает модуль IronPython, в F #.

using System;
using IronPython.Runtime;

[assembly: PythonModule("my_module", typeof(MyModule))]

public static class MyModule {
    public static void hello_world() {
        Console.WriteLine("hello world");
    }
}

Использование PythonModule позволяет, кроме всего прочего, from my_module import *.

У меня проблемы с выяснением того, как применить атрибут PythonModule в F #. Документация F # говорит только об атрибутах сборки, связанных с модулями и прикрепленных к do (). Мне не ясно, как определять статические классы, которые интерпретируются как модули Python, но я не эксперт C # / F # / IronPython.

Ответы [ 2 ]

8 голосов
/ 16 февраля 2010

У меня нет всех битов под рукой, чтобы посмотреть, работает ли это, но я бы попробовал

open System
open IronPython.Runtime

type MyModule = 
    static member hello_world() =
        Console.WriteLine("hello world")

module DummyModuleOnWhichToAttachAssemblyAttribute =
    [<assembly: PythonModule("my_module", typeof<MyModule>)>] 
    do ()

для начинающих.

4 голосов
/ 16 февраля 2010

Не проверял, но ...

module MyModule 

open System
open IronPython.Runtime

let hello_world () =
    Console.WriteLine "Hello, World."

[<assembly: PythonModule("my_module", typeof<MyModule>)>] 
do ()

То же, что и у Брайана, но без пустышки.

...