問題タブ [crystal-lang]
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.
ruby - Crystal プログラミング言語 (マシンコードでコンパイルされた Ruby) を試した人はいますか?
他の多くの人と同じように、私はいつも「Ruby 用の純粋なコンパイラは決して存在しないだろう。なぜなら言語は動的すぎて静的コンパイラが機能しないから」と言っている。
しかし、私は最近これらに出くわしました:
どちらのプロジェクトも非常に興味深いようです。Ruby の優雅さと柔軟性のすべて (またはほとんど) を維持しながら、ネイティブ コンパイル言語の速度 (および、商業的に必要とされることが多いコンパイル言語の難読化されたコード) を実現できます。優れたサポート ライブラリ (または、既存の C++ ライブラリにアクセスする可能性が高い) を追加すると、この機能が興味深い理由を簡単に理解できます。
Crystal 言語を試した人はいますか? (ruby-llvm のコンパイルの問題のため、まだ行っていません)
彼/彼女はそれについてどのように感じましたか?
これらの設計上の選択を前提として、Ruby 用のネイティブ コード (マシン コード) コンパイラを (妥当な労力と妥当な時間で) 開発することは実際に可能だと思いますか? 意味があるでしょうか?
multithreading - クリスタルは、スレッドプールの背後にあるアイデアをファイバー/スポーンに変換します
ファイバー\コルーチンの背後にあるアイデアとCrystalでの実装を学ぶのに苦労しています。
私はこれがこれを尋ねる適切な場所であることを願っています.「ここにいない」という答えを完全に受け入れます:)
これは、Ruby でマルチスレッドを処理する私の通常の方法です。
このようにして、通常は着信接続などの新しいスレッドを開き、スレッドをスレッド配列に追加してから、必要以上のスレッドがないことを確認します。
spawn\channels\fibers などを使用して、Crystal で同様のものを実装するにはどうすればよいでしょうか。
compile-time - コンパイル時に任意のコードを実行する
Crystal にはコンパイル時にコードを定義するためのマクロ システムがあることは知っていますが、それとは別にコードを実行することは可能ですか?
たとえば、コンパイル中に実行できるようにすることはできますか?
または、より深刻な例として、コンパイラが実行されているファイル システムから読み書きできるでしょうか?
crystal-lang - メソッド引数のデフォルト値を設定する方法
これは有効な Ruby ですが、Crystal にはないようです。タイピングが原因ではないかと疑っています。空のハッシュをデフォルトにすることをコンパイラに伝えるにはどうすればよいですか?
crystal-lang - Crystalの基準に一致する最初の要素を取得するには?
find
APIの多くはRubyと同じなので最初に探しましたが、見つかりませんfind
でした。したがって、次善の策はselect
+だと思いましたfirst
(私の配列は非常に小さいので、これで問題ありません)。
Crystal API select!
for an Array を見ると、Ruby と同じようにブロックが必要です。select!
受信配列を変更しているように見えますが、ありませんselect
(少なくとも確認できます!)。
これは私のコードです:
エラーは次のとおりです。