2012-03-31 32 views

答えて

8

ここで必要以上のタイプヒントがあります。あなたが持っているものは、私が彼らが何か良いことをしているとは完全には分からないように置かれています。実際にはletの値ではなく、 。つまり、(let [^Observer obs (...)] ...)ではなく、(let [obs ^Observer (...)] ...)です。多くの場合、これらは両方とも機能しますが、前者はもっと安全です。また、をproxyよりも強く選択することをお勧めします。これは可能性がある場合はproxyが推奨されません。

私はあなたが使用しているニューラルネットワークライブラリは、あなたがcreateStockMarketNeuralNetworkへの引数に単一typehintが必要な場合がありますが、残りはあなたのコードを読み取る誰を混同する以外に何の目的で配信されていませんので、何かわからない - それはです正確でないヒントを選択した場合、余分な型ヒントがコンパイラを混乱させ、より遅いコードを書き込む可能性さえあります。したがって、コード全体に無作為に配置するのではなく、reifyアプローチに切り替えて、*warn-on-reflection*をtrueに設定し、もしあれば何が反映されているかを確認してください。以下はreifyと、このコードのバージョンであり、私が知っているすべてtypehintsを削除した後は全く違い行いません:あなたが言うように

私は私の答えを削除
(let [obs (reify java.util.Observer 
      (update [this o arg] 
       (println arg))) 
     ^StockPriceNeuralNetwork network (NeuralNetworkFactory/createStockMarketNeuralNetwork ^java.util.List [obs])] 
    (.trainForTime network)) 
+0

、タイプヒントが混乱してし... – sw1nn

関連する問題