2016-07-20 22 views
1

関数定義内に実装オブジェクトなしでJuliaでAPIを作成したいと考えています。実装オブジェクトを公開せずにジュリアAPIを作成する方法

私は何とかそれが正しい方法ではないと感じている。この

module MyModule 
import objModule 
obj = ImplementationObject() 

function do_something(arg1, arg2) 
    do_something(obj, arg1, arg2) 
end 
end 

考え

result1 = do_something(arg1, arg2) 
result2 = do_somethingelse(arg3) 

代わりの

obj = ImplementationObject() 
result1 = do_something(obj, arg1, arg2) 
result2 = do_somethingelse(obj, arg3) 

をしたいです。

助けてください。ありがとう!

+0

[DataStructures.jl](https://github.com/JuliaLang/DataStructures.jl)がどのように機能するかを見ていきます。 –

+1

実装オブジェクトの目的は何ですか?どうしてそんなことが必要なの?変更可能な状態を格納する必要がありますか? –

+0

関数 'place_order(stock、100)'について考えてみましょう。この関数は内部的にこの関数を実装するために仲介オブジェクトを使用しますが、私はユーザーに仲介オブジェクトについて何も知らせたくありません。また、仲介物は1つだけです。 –

答えて

1

実際に同じ実装オブジェクトを常に(暗黙的に)使用するようにユーザーを制限する場合は、上記の例は問題ありません。

ユーザが独自のインプリメンテーションオブジェクトを作成する方法を提供する場合、ユーザがdo_somethingをオーバーロードした方法でも、ユーザがそれを指定しないとデフォルトが提供されます。これは、Julia基盤のprintrandが、デフォルトの出力ストリームと乱数ジェネレータをそれぞれ提供していない場合に、それぞれを使用する方法と似ています。

関連する問題