問題タブ [clojure]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
lisp - Clojure変数とループ
グーグルで調べてみると、while
ループを使用したり、変数を使用したりすることはお勧めできません。
ここで、入力ストリームから文字を読み取り、それに応じて解析する非常に単純なアルゴリズムを実装しました。入力の場合10:abcdefghej
は解析し10
、コロンの次の10バイトを読み取ります。
私が少し迷っているのは、変数に依存しないようにこれをリファクタリングする方法です。
また、変数を宣言する唯一の方法はwith-local-vars
キーワードを使用することであることを理解しています。最初にすべての変数を1つのブロックで定義するのは非現実的ではありませんか、それともいくつかの重要なポイントが欠けていますか?
loops - Clojure ループは 1 つ余分に読み取ります
長さが 4 の場合、次のループは 5 回実行されます。ストリームから 5 文字を読み取ります。
java - 奇妙なクラスパス、.NoClassDefFoundError エラー
編集済み:ソリューションが見つかりました。これは奇妙で、最善の解決策ではありませんが、swt.jar と私のクラスがまったく同じ瞬間に同じ方法でロードされるように、先に進んで MY JAVA CODE (com.*) のクラスを swt.jar に入れました。クラスローダー。最善の解決策ではありませんが、一時的な修正です
編集: ここにほとんどのコードを追加しました: http://groups.google.com/group/clojure/browse_thread/thread/1d7dd4913b2f9aa7 http://groups.google.com/group/clojure/web/NoClassDefIssue.zip http: //groups.google.com/group/clojure/web/MostCodeIssue.java
これは奇妙な no classdef not found エラーです。これは、私のコードの動作の 90% が少し異なるシナリオです。Clojure を使用していることを無視してください。通常の Java コードでもこれを実行しましたが、同じエラーが発生します。
理想的には、カスタム クラスローダーに関するヘルプを期待していました。私の最初の考えは、クラスローダーを作成し、jar のファイルパス/URL をクラスローダーに追加して、コードを起動できるということでした。しかし、どうやら奇妙なことが起こっているようです。
4〜5個の補助jarファイルを動的にロードするjarファイルが1つあります。シンプルな URLClassLoader に基づいて構築されています。ユーザーが 1 つの jar ファイルをクリックしてアプリケーションを起動できるため、これを実行したいと考えています。そのため、ユーザーが心配しなければならない項目が 1 つあります。
この jar ファイルをクリックすると、アプリケーションはファイルシステムから jar ファイルをロードします。たとえば、アプリケーションは swt.jar (Eclipse のウィジェット ツールキット) とその他の jar をロードします。
3 (しかし心配しないでください)、私のアプリケーションは Clojure (動的プログラミング言語) で構築されています。最初に起動するアプリケーションはこの Clojure スクリプトです。私のアプリケーションのほとんどは、clojure スクリプト内にあります。
4. 1 ~ 3 まではすべて問題なく動作します。アプリケーションがロードされ、clojure スクリプトが実行され、SWT GUI アプリケーションが実行されます。
ここが動かない部分です。
既存の Java ライブラリがあり、それを my-swt-gui.jar と呼びます。それもswtアプリケーションです。基本的に別のGUIアプリケーションがすでに構築されています。現在の clojure/swt アプリケーションからウィンドウをロードしようとしています。何らかの理由で、JAVA 指向のライブラリが SWT を認識せず、noclassdef エラーが発生します。
ここが奇妙です。そして、どこに奇妙な点があると思われるかを特定します。
エンティティ: A. Java 指向のクラスローダー。Java クラスローダーで、clojure アプリケーションを起動します。SWT およびその他の jar ファイルは、このクラスローダーでロードされます。B. セクション エンティティによって呼び出される Clojure 指向のコード clojure コードは、swt ベースの GUI アプリケーションです。B は正常に動作します。C. 別の GUI ウィンドウを含む Java コード。何らかの理由で、このライブラリが読み込まれず、noclassdef というエラーが発生します。
注: 私は、SWT クラスが実際にクラスパスにあることを知っています。そうしないと、NoClassFound 例外が発生します。私はその例外を受けていません。他にも何かが起こっています。
注: SWT に win32 dll が含まれていることも問題でしょうか? おそらく、win32 dll jar へのアクセスは初めて機能しますが、Java コードでは機能しませんか? しかし、それは奇妙です。SWT が機能し、その後機能しないのはなぜですか?
すべてのコードをお見せすることはできませんが、関連する部分をお見せできれば幸いです。
メインのクラスローダー コードは次のとおりです。
そして、これがJava swtウィンドウをロードしようとした方法です。クラスローダーについてできるだけ多くを印刷して、別のクラスローダーに変更しようとしました。
public static final void createPDFWindowShell(IStartService service, final Object shell, final Object globalClassLoader) throws Exception {
}
エラーは次のとおりです。
-
function - ストリームロックから読み取るClojure関数
(get-next-indicatorストリームインジケーター)と呼ばれる入力ストリームから1つのトークンを読み取り、それを返す関数があります。私はそれを使って地図を作成しようとしています。
しかし、私がそれを実行すると、それはロックされます。get-next-indicator関数の1つを削除すると、機能します。両方の関数が同時にストリームを読み取ろうとしますか?これです。これを引き起こしているのは何ですか?
vim - vimでREPLをセットアップするにはどうすればよいですか?
clojure の学習を簡単に開始できるように、vimclojure をインストールしました。しかし、vim内でREPLをセットアップできませんでした。これは基本的に、vim(?) で maplocalleader を記述できなかったためです。
vimclojure/doc/clojure.txt のドキュメントに基づいて、REPL を開始するために .vimrc に以下を追加しました -
ただし、「sr」と入力しても REPL は開始されません。
前もって感謝します。
ruby - Compojure/Sinatra アプリケーションのデプロイ
compojure/sinatra アプリケーションを展開するための推奨される方法は何ですか? ホスト上で複数のサイトを実行しているため、ポート 80 で jetty/mongrel を実行できません。同じホストで実行されている複数のサイト/アプリケーションをどのように処理すればよいですか?
clojure - 構造体のフィールドのリストを取得する
構造体に含まれるフィールドを見つけるにはどうすればよいですか? たとえば、次のものがある場合:
から (:data :left :right) のリスト、セット、またはベクトルを取得するにはどうすればよいですか? 私はもう試した
しかし、これは正しいように見えるメソッドを提供しません。
clojure - Clojureマクロの問題
別の構造体をベースとして新しいベースを作成する関数を作成しようとしています。最初に、古い構造体と同じフィールドを持つ新しい構造体を作成するマクロを作成しようとしました。私がこれを行うべきだと思ったマクロは以下のとおりですが、次のエラーが発生します。
大きい:
使用例:
この場合の望ましい出力は次のようになります。